How can I map a character to a key combination?

13,664

Solution 1

Another, low-level option to try, especially if you can't get xkb to work is to use xmodmap directly.

The first thing to do would be to get a sense of your current keyboard layout. Open a terminal and type:

xmodmap -pke

This will give you a list of numbered positions on your keyboard and what they are mapped to. E.g., you might see an entry like:

keycode 14 = 5 percent 5 percent

This means that a certain key is mapped to 5 when pressed normally, the percent sign % when pressed with a shift. (And the next two values are for when Mode_shift is active; but let's not get into that right now.

If I wanted to change this key I could type in:

xmodmap -e "keycode 14 = 5 U203D 5 UD203D"

Now, instead of getting a percent sign % when I type shift-5, I get ‽.

That's just an example; probably you don't want to remap % to ‽. But maybe there's some other key you don't use a lot. For example, one nice option might be to remap the shift-Menu instead. So I see from xmodmap -pke that I have:

xmodmap -e "keycode 135 = Menu Menu Menu Menu"

I might make it instead:

xmodmap -e "keycode 135 = Menu U203D Menu U203D"

If I want to make that permanent, just throw it inside some init script that runs automatically, like .profile, .bashrc or .xinitrc, or create your own that Lubuntu loads automatically.

However, it's very important to run xmodmap -pke first to see what your initial set up looks like. Your keycode numbers may well be different from mine. And it's also the best way to see what else is available.

Anyway, that's a very low-level option. If you want a high-level option, look at something like autokey or xdotool instead.

Solution 2

Another option is to make use of the 'compose' key. Using Ubuntu, choose one in the Keyboard → Layouts → Option configuration (I choose Right Alt). For Kubuntu, go to System Settings → Input Devices → Keyboard → Advanced, check "Configure keyboard options", and then select your chosen key under "Compose key position".

To use the compose key, type Compose + ? + !.

There are lots of useful looking characters you can generate in this way: http://www.hermit.org/Linux/ComposeKeys.html

Solution 3

Here's something that works okay:

  1. Install xdotool Install xdotool (brilliant piece of software by the way)
  2. go to System → Preferences → Keyboard Shortcuts
  3. Add a new shortcut, as the command choose xdotool key ctrl+shift+u type "203d "

This is based on Matt's answer, but it will type the keys for you every time you hit the keyboard shortcut (albeit a bit slowly, about 150ms).

To add any other character, go to the gnome character map and search for it; In the status bar you should see the hexadecimal index of the glyph - i.e. "U+203d".

I now have the interrobang mapped to Ctrl+?, see‽ :-)

Solution 4

In GNOME you can enter unicode characters by type Ctrl+Shift+u+unicode point, followed Space or Enter.

So, type an interrobang, you'd enter Ctrl+Shift+u+2032d+Space.

How cool is that‽ Actually, I think it's a bit clumsy, but it does the job.

Share:
13,664

Related videos on Youtube

Steve Jessop
Author by

Steve Jessop

Updated on September 17, 2022

Comments

  • Steve Jessop
    Steve Jessop over 1 year

    I'm a bit of a fan of the interrobang (‽), but it obviously is not on my keyboard. How can I map that character to a key combination?

  • loevborg
    loevborg almost 14 years
    You should add that you need to hit Enter or Space to accept.
  • Steve Jessop
    Steve Jessop almost 14 years
    Since I'm using Lubuntu, I don't have the same Keyboard configuration software as in GNOME. Any idea how I could do this in Lubuntu?
  • JanC
    JanC almost 14 years
    I haven't tested this, but I suppose editing /etc/default/console-setup so that the line with XKBOPTIONS="" becomes XKBOPTIONS="compose:rwin" (or whatever key you want to become the "compose key" or "multi key") should work. Also see the guide that Source Lab refers to, as well as the pages it links to at the bottom for more info about XKB options & key names and such.
  • Steve Jessop
    Steve Jessop over 13 years
    Hey, Stefano, thanks for the answer! Since I'm using Lubuntu, I can't find the Keyboard Shortcuts utility. Can you find out what the command for that menu item is?
  • flo
    flo over 13 years
    Phew i've never used LXDE, so no idea, but this link could help: en.gentoo-wiki.com/wiki/…
  • JanC
    JanC almost 13 years
    For recent versions of console-setup, those options are in /etc/default/keyboard now.
  • Adrián
    Adrián about 3 years
    It's helpfully. Thanks!