The emoji picker could be a bit more useful

So, I’m an American user with a standard English (US) keyboard on my desktop PC (running Kubuntu 24.04 LTE). Not only do I not have the ability to simply type emoji, I also don’t have easy access to a host of different symbols– currency symbols like ¥, £, €, or diacritic letters like áçëñ, or et cetera. Back before I upgraded my system from Windows to Linux, the emoji picker in that system doubled as a symbol picker– I could hit Win+. and select between emoji or a whole host of other ascii/unicode symbols, including diacritics, currency symbols, and even pre-typed kaomoji. I would actually use the emoji picker more for that (ESPECIALLY the é in Pokémon) than for actually typing emoji.

Expecting to be able to do similar here in Linux, I have come to realize that this is… not a feature the emoji picker here has. Which is a bit frustrating.

Similarly, I’ve noticed that certain emoji in the emoji picker… aren’t? The biggest smoking gun is the Rainbow Flag and Trans Flag emoji (:rainbow_flag: and :transgender_flag:). They’re selectable, but the emoji picker can’t display them– so instead you see a :white_flag::rainbow: or a :white_flag::transgender_symbol:, click that, and you can paste a :rainbow_flag: or :transgender_flag: into wherever. There’s a couple of other emoji that get the same treatment but those two are the most visible to me for…

:rainbow_flag: Reasons :transgender_flag:

1 Like

there are two alternatives to the emoji picker that are far more convenient.

ISO Level 3 Shift

assigning a key to this will enable two additional characters per key cap, depending on the keyboard layout.

settings > input devices > keyboard > advanced > choose a key for the “3rd level”

i recommend: Right Alt

now in addition to regular and shifted keys you also have Right Alt and Shifted Right Alt keys at your finger tips.

to see what these extra characters are go to the layouts tab, check the configure layouts box and click on your default layout … the preview button will open a window showing the keyboard will all four characters per key cap.

meta+prtsc will take a screen cap of the open window which you can print out.

i use the US, symbolic keyboard layout but there are lots of others to choose from with different sets of ISO Shift characters you can preview in the selection dialog

you can also add additional layouts and quickly switch between them for access to even more characters.

you can apparently even create your own, but that skill is beyond my capabilities, atm.

look at these other layouts for characters you might need… there also a one called EurKEY (US) which has a clever layout and even gives you access to Multi Key and Dead Key characters.

Multi Key (Compose Key)

The other method uses a special key to activate the compose feature where you can type up to four characters to produce a single character.

back on the advance tab of the keyboard settings you can choose a position for the compose key

i recommend: Right Ctrl

How it works is you press and release the compose key to enter compose mode, and then you type a 2-4 character code to get the final result.

try: R_Alt then L L A P

the codes are determined by the contents of your /usr/share/X11/locale/en_US.UTF-8/Compose file which you can browse.

Emoji Picker improvement

the ISO shift characters are all freely available to type into any text box ∴ (therefore) the emoji picker is irrelevant, and ISO shift the qwerty row of keys and easily type ∀∈ερτυ

however when it comes to the compose feature, this does not always work in text entry boxes such as this one, i can compose a ⑤ or a ¶, but not the Compose F U code… №, it does not work

so my suggestion for the Emoji picker is that it allow for compose feature input to make pasting characters produced this way ☭ more convenient.

3 Likes

Actually, there’s a third alternative: KCharSelect - KDE Applications

And I think an argument could be made that kcharselect and the emoji picker could be combined into a single application, as they’re quite similar in what they provide.

4 Likes

Tbh I support the idea of the emoji picker and kcharselect being rolled together (and pulled up with the same Super+. key combo); after all, what is an emoji picker other than a character selector that can only select a very specific subset of unicode characters?

I’d actually honestly disagree– and it’s entirely because there’s a learning gap that a character picker app wouldn’t impose.

RE: ISO Level 3 Shift: There is a reason that the number row has all of its shift characters (!@#$% et al) printed on the keys, and it’s for learning where the alternate characters are. The same goes for the equivalent functionality on a phone keyboard– if you hold a key on there, it will show you what ‘shifted’ characters you can access there. Printing out a screencap of an ISO Level 3 Shift keyboard is… about as convenient-sounding as printing out a list of altcodes.

Re: Compose Key: This sounds easier to learn to my brain, but I still don’t think I use alternate character sets with enough frequency to actually learn the compose key shortcuts to various characters. Which means I would still end up having to consult a printed out document and/or look up what characters to type to get what characters– and at that point I might as well just copy and paste the symbol anyways.

A character picker like the emoji picker– or kcharselect– wouldn’t have this issue.

3 Likes

ideally, with a well crafted keyboard layout the “hidden” characters are found in logical locations that are certainly no worse to get used to than memorizing a hundred keyboard shortcuts for all the plasma things.

access is way faster than picking from app you have to open, copying to the clipboard, and then pasting into your document… but it does lack the a level of discovery.

again it’s more direct if you use it often enough, but lacks that discoverability and is in fact not even enabled by default.

but my point with either picker app is there should be a way to add your own favorite unicode to the menu of items to pick from.

i can compose to get :peace_symbol: which is U262E

but if i search for “peace” in either picker i can only find :peace_symbol: which is also U+262E

which is weird and i’m not sure how they can be the same unicode but render differently.

or as another example if i search in the character picker for “pilcrow” i can only find ⁋ which is the wrong way around form the ¶ normally in use… and when i search “paragraph” i find this thing

Screenshot_20251225_110757

which oddly pastes as ¶ when copied to the clipboard.

1 Like

set up my own keyboard layout which is now up and running… from my notes.


## SPECIAL CHARACTERS ##

# typing special characters into documents, text boxes, or terminals are done several ways.
# choosing them from the emoji selector or kcharselect GUI is fine for occasional needs.
# slightly more convenient is to use the Compose key + 1-4 letter code to generate them.
# to see what compose codes are, you can look them up based on your locale... for me, that's
/usr/share/X11/locale/en_US.UTF-8/Compose

# but, by far the most convenient method is to use the ISOshift (AltGr) key to access the
# 3rd and 4th layers of characters that your keyboard layout can support.
#
# the standard US layout does not provide anything for these extra two layers, but there
# are variants that do, and English (US, Symbolic) provides greek letters with some symbols.
#
# settings > input devices > Advanced has the Compose and 3rd layer shift key choices
# like R_CTRL for compose and R_ALT for ISOshift, along with layout and variant
# selections... this plasma GUI tool saves all of it's settings in
~/.config/kxkbrc

# if your keyboard layout and variant choice has all the special characters you need
# easy access to then you can stop reading... and if you still need more and find
# other layouts and variants with them, your GUI keyboard layout settings can be
# used to switch between multiple layouts and variants as needed.
#
# but if you need access to characters that are not already included or if your
# GUI settings becomes inoperable and you only have access a single variant, then
# a custom layout may be needed to keep all the characters in one place for easy access.

# if the plasma GUI settings gets broken the system will ignore the settings file
# and the following command line utility can be used to set the configuration of the
# Compose key and ISOshift key choices for accessing the special characters.
sudo dpkg-reconfigure keyboard-configuration

# however, if the layout and variant settings from that command are also ignored,
# then in order to set the default layout after each reboot, use root to edit this file.
/etc/X11/xorg.conf.d/00-keyboard.conf

# temporary changes to the keyboard layout and variant can also be made on the fly
# if you know the layout and variant name using this command
setxkbmap <layout> <variant>

# layouts are stored in the following directory under the country's two letter code (us)
/usr/share/X11/xkb/symbols
# and within each layout there will be variants defined by lines that say
xkb_symbols "<variant>"
# these files support the include syntax so tweaks can be made to existing definitions
# allowing for easy changes to a single key, or set of keys as desired.

# under each of these definitions there are key codes for individual keys such as <AD05>
# which is the row D (4th from bottom) key in the 5th position from the left (the T key)
# after, on each line, are keysym definitions, separated by commas, and enclosed by {[]}
# these positions correspond to the following:  {[key, shift+key, ISOkey, shift+ISOkey]}

# the keysym can be a key (T), a unicode without the +sign (U262E), or the keysym name
# (plusminus) as defined in a file called keysymdef.h which can usually be found in
/usr/include/X11/keysymdef.h
# using VoidSymbol or leaving the keysym blank means the key press will produce nothing
# the special word NoSymbol is used when an existing keysym is not to be changed

# to make your own custom keyboard layout try to find an existing one that comes as close
# to what you want as practical. you can use the preview function in the settings GUI to
# get a graphic of what all the key definitions are set to for that keyboard layout.
#
# when you find one that comes close, then note the counrty and variant name, and
# open that file from the symbols directory. there you can search for the variant
# name to find the relevant block of key definitions. it may be that an include
# statement is bringing in most of the key definitions so, in that case you may want to
# search for the variant called out in the include statement (might be a different file).
#
# once you have found the keys or block of keys you want to customize just copy and
# paste them into a new document along with the section header and closing semicolon
# like as shown below, and proceed to make your edits to the keysym values.

partial alphanumeric_keys
xkb_symbols "symbolic-geek" {

    include "us(symbolic)"
    name[Group1]= "English (US, Symbolic-Greek and Geek)";

    key <TLDE> { [ NoSymbol,   NoSymbol,    U2241,              approxeq            ] }; // ` ~ ≁ ≈
    key <AE01> { [ NoSymbol,   NoSymbol,    U220E,              because             ] }; // 1 ! ∎ ∵
    key <AE11> { [ NoSymbol,   NoSymbol,    emdash,             endash              ] }; // - _ — –
    key <AE12> { [ NoSymbol,   NoSymbol,    notequal,           plusminus           ] }; // = + ≠ ±

    key <AD01> { [ NoSymbol,   NoSymbol,    U21D1,              U21D3               ] }; // q Q ⇑ ⇓
    key <BKSL> { [ NoSymbol,   NoSymbol,    U1F6C7,             brokenbar           ] }; // \ | 🛇 ¦

    key <AC01> { [ NoSymbol,   NoSymbol,    Greek_alpha,        U2659               ] }; // a A α ♙
    key <AC10> { [ NoSymbol,   NoSymbol,    uparrow,            downarrow           ] }; // ; : ↑ ↓

    key <AB01> { [ NoSymbol,   NoSymbol,    Greek_zeta,         U0277               ] }; // z Z ζ ɷ
    key <AB10> { [ NoSymbol,   NoSymbol,    U262E,              U262D               ] }; // / ? ☮ ☭

    include "level3(ralt_switch)"
};

# in this example the variant name will be symbolic-geek and is what you would use when
# manually editing the 00-keyboard.conf file, or using setxkbmap.
#
# the definition includes us(symbolic) which is the symbolic variant inside the us file.
# it then names the keyboard layout as it would appear in the GUI settings.
#
# what follows is a list of key definitions where only the ISO and shifted ISO
# key characters are being redefined, while the un-shifted and shifted characters remain
# unchanged by using the NoSymbol code, from what is shown in the symbolic variant.
#
# the level3(ralt_switch) is the key selected for accessing the 3rd and 4th levels
#
# the easiest way to incorporate this layout is to simply append it to the end of the
# existing us keyboard layout... but before doing that it is recommended to make a copy
cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/us-bak

# in case you need to restore the existing us keyboard layout for any reason.
#
# now open the us file as root in a text editor of your choice and paste into it
# the contents of your new file with your new definitions, save and reboot.
#
# if you've done everything right you should find the keys have changed, and running
setxkbmap -print -query
# should show your chosen layout and variant as active.

# lastly, to see the new layout or variant listed in the settings GUI menus then
# add an entry for it to each of these files, copying the format of the layout
# or variant used as the starting point for the new one.
/usr/share/X11/xkb/rules/evdev.lst
/usr/share/X11/xkb/rules/evdev.xml


here is a preview of the keyboard layout crated from this effort