Remapear uma tecla do teclado para imprimir ⸮ (marca de ironia)

3

Eu me encontro usando o marca de ironia ⸮ unicode U + 2E2E (ou؟ unicode U + 061F) em ambos os mcabber e vim muito. O antigo antipadrão de copiar e colar é entediante, então pensei em renomear uma das muitas teclas desnecessárias que tenho para imprimi-lo. Então, minha pergunta é tripla (mas realmente a mesma pergunta):

  • Como fazer isso em mcabber ?
  • Como fazer isso em impressionante ? Como esse é o gerenciador de janelas que uso, ele deve funcionar para todos os aplicativos, certo?
  • Como fazer isso usando xmodmap ou algum outro encantamento arcano X11?

Note que no vim isto é trivial, apenas adicione map! ;; ⸮ no seu arquivo ~/.vimrc , então no modo de inserção tudo que você precisa é digitar ";;" para substituí-lo.

    
por Sardathrion 04.06.2014 / 16:03

3 respostas

2

A melhor maneira de fazer isso é na configuração do teclado.

Não sei se você pode definir um atalho personalizado para imprimir o caractere no seu cliente de jabber, mas seria apenas para esse aplicativo. Quanto ao Awesome: é um gerenciador de janelas, então não é o trabalho dele.

Como inserir (ou qualquer caractere unicode) em alguns aplicativos (GTK pelo menos):

Ctrl + Deslocamento + U e depois 2E2E (o código hexadecimal).

Como configurar o keyboad para obtê-lo em outro lugar também:

xmodmap é unidirecional, mas está sendo substituído em favor do Xkb, mesmo que a configuração do Xkb possa parecer mais complexa. Mas você pediu por encantamentos arcanos: D

setxkbmap -print imprime o mapa de teclado em uso. Você pode enviar isso para um arquivo para usá-lo como base para o novo mapa de teclado. ( Pule para exemplo abaixo para a versão rápida de "como" ).

xkbcomp é um utilitário que pode ser usado para compilar e enviar um mapa de teclado para o servidor X.

xkbcomp $DISPLAY keymap.dump irá despejar a configuração atual no arquivo keymap.dump . É bastante longo, pois é o mesmo que anteriormente, mas com os valores obtidos da combinação dos elementos include d. Pode ser útil procurar os nomes que são dados às chaves. Precisamos do nome para atribuir outro símbolo a uma chave. Você também pode modificar e usá-lo diretamente, mas você também pode usar os includes e apenas redefinir o que você deseja. Os include são arquivos em /usr/share/X11/xkb/ , nos diretórios correspondentes às seções.

O arquivo de mapa de teclado tem várias seções:

  • xkb_keycodes : a parte que mapeia códigos de teclas do teclado X para um nome de chave usado em outras seções. Você pode obter o código-chave do X com xev e encontrar o nome associado nesta parte.
  • xkb_types : a parte que descreve os tipos e qual nível corresponde a quais modificadores de teclado (Shift, Control, Alt, qualquer combinação deles, etc.)
  • xkb_compatibility : Para "aplicativos que não são compatíveis com Xkb", pelo que li, não sei o que acontece aqui.
  • xkb_symbols : a parte que mapeia os nomes das chaves para os keyyms e aquela em que vamos reescrever uma das definições para adicionar esse caractere unicode. Você pode ver a definição atual da chave que deseja usar.
  • xkb_geometry : a forma do teclado físico. Não sei o que usa isso.

Se você observar as principais definições no mapa de teclas descartado, verá que elas têm um tipo associado. O tipo da chave determina quais modificadores estão disponíveis e corresponde a qual nível. A combinação de chave e nível corresponde a um keysym. O tipo é um definido na seção xkb_types . Se você não especificar outro tipo ao redefinir a chave, será o definido no xkb_symbols map incluído.

Se eu pegar, por exemplo, minha chave I , existem quatro níveis, correspondentes a: apenas a tecla, chave + Shift , tecla + AltGr , tecla + Shift + AltGr .

Para o grupo, se você não estiver usando mais de um layout (na configuração do teclado), provavelmente terá apenas um e não precisará especificá-lo. (Você pode usar vários grupos para alternar entre as principais definições associadas a esse grupo).

Aqui está um exemplo de arquivo keymap modificado:

xkb_keymap {
 xkb_keycodes { include "evdev+aliases(azerty)"};
 xkb_types { include "complete"};
 xkb_compatibility {include "complete"};
 xkb_symbols {
  include "pc+fr+inet(evdev)"
  key <AD08> {[ i, I, U2E2E, idotless]};
  key <AD09> {[ o, O, oslash, U262F]};
 };
 xkb_geometry { include "pc(pc104)"};
};

Com este mapa de teclas AltGr + I fornece ⸮ e Deslocamento + AltGr + O dá ☯.

Para definir o mapa de teclado: xkbcomp mykeymap.xkb $DISPLAY

O wiki do Archlinux tem mais detalhes e alguns outros links no final.

    
por 05.06.2014 / 03:18
5

Eu prefiro usar o sistema de teclas Compose, acabei de verificar e parece que tive Compor - / - ? ( e Compor - ? - / ) ajustado para a saída U + 2E2E por algum tempo agora (? refletido no /)

Meu arquivo .XCompose é assim:

#
# add in the original stuff (what's usually there)
include "%L"
#
# Compose key sequences
#
# generate PI char
<Multi_key> <p> <i>     : U03C0 # U03C0 PI
<Multi_key> <P> <I>     : U03C0 # U03C0 PI
#
<Multi_key> <i> <n> <f> : U221E # U221E infinity
<Multi_key> <I> <N> <F> : U221E # U221E infinity
#
<Multi_key> </> <?>     : U2E2E # U2E2E irony punctuation (reversed ?)
<Multi_key> <?> </>     : U2E2E # U2E2E irony punctuation (reversed ?)
#
<Multi_key> <3> <*>     : U2042 # U2042 asterism
#
#

Aqui eu coloco as teclas apropriadas "predefinir" Compose com a linha include "%L" , depois adiciono minhas próprias personalizações depois disso ...

Eu tenho o Capslock remapeado para ser minha chave Compose , verifique seu Gerenciador de Janelas como fazer isso, ou leia sobre o comando setxkbmap . Mas aqui está o meu:

setxkbmap -model pc101 -layout us -option -option compose:caps -option shift:both_capslock

Define que Capslock seja Compose , também define Shift + Deslocamento ( ambos ) para alternar o Capslock. (para aquelas raras ocasiões). Muitas outras opções de -option , eu tirei um par por brevidade, principalmente X Windows ZAP ( Ctrl - Alt - Backspace ) keystrokes e Left-Win sendo Meta

    
por 05.06.2014 / 04:07
4

Isso é possível de várias maneiras. No X11 Xmodmap é provavelmente uma das maneiras mais fáceis, para uma simples mudança como essa.

Artigo da Wikipédia sobre pontuação Irony :

This character can be represented using the reversed question mark (⸮) found in Unicode as U+2E2E; another character approximating it is the Arabic question mark (؟), U+061F.

Manual do Xmodmap :

Keysyms matching Unicode characters may be specified as "U0020" to "U007E" and "U00A0" to "U10FFFF" for all possible Unicode characters.

Eu apenas tentei e

xmodmap -e "keysym F8 = U061F"

parece fazer o truque. O comando acima liga o símbolo na tecla F8 por keysym. Claro que você pode vincular esse símbolo na chave de sua escolha. Todos os keyyms possíveis (não necessariamente mapeados atualmente, no entanto) geralmente podem ser encontrados nos arquivos /usr/include/X11/{keysymdef,XF86keysym}.h . Você pode mapeá-lo por keycode também. Com ferramentas como xev , você pode verificar os códigos de teclas e seus keyyms mapeados no seu sistema.

Confira alguns decentes tutorial do xmodmap na Internet.

    
por 04.06.2014 / 18:04