Veja Como funcionam as entradas de teclado e texto? para uma visão geral do tópico. Depende se o aplicativo está sendo executado em um terminal ou se está falando diretamente com o ambiente da GUI.
Em um terminal, o software do terminal (geralmente um emulador de terminal neste século) determina a codificação de caracteres. Ele transmite a codificação de caracteres (o mesmo para entrada e saída), definindo a variável de ambiente localidade LC_CTYPE
. Se esta variável não estiver configurada ou configurada como C
, o terminal não está fornecendo nenhuma informação, portanto, o aplicativo não pode saber qual é a codificação. Em um terminal, os caracteres são enviados para o aplicativo como caracteres; entrada sem caracteres (teclas de função, teclas de cursor, teclas com modificadores como Alt , etc.) é enviada como seqüências de escape (algumas delas como caracteres de controle ).
keycode
, que corresponde aproximadamente à localização física da chave, e state
, que codifica os modificadores ativos). O aplicativo pode chamar uma função como XLookupString
(função tradicional, limitada ao Latin-1 ) ou XmbLookupString
(função de suporte a outras codificações unibyte) ou XwcLookupString
(função que suporta codificações multibyte) ou < href="https://www.x.org/releases/X11R7.5/doc/man/man3/XmbLookupString.3.html"> Xutf8LookupString
(função UTF-8 moderna) para converter este informações brutas para uma cadeia de caracteres.
O mapeamento de chaves para caracteres pode ser alterado em vários níveis; Como funcionam as entradas de teclado e texto? uma visão geral.