Obtendo alguns traços de teclado franco-canadense para trabalhar em teclado inglês

1

Estou tentando usar alguns dos stokes de teclado franco-canadenses aos quais estou acostumado em um teclado em inglês. Eu gostaria de mudar o comportamento de algumas chaves. Consegui implementar essas mudanças no Vim, mas gostaria que elas fossem aplicadas em todo o sistema (para Windows e Ubuntu).

Aqui está o que eu quero implementar:

  • Se eu pressionar [ a , o caractere impresso será â .

  • Quando pressiono [ r , algo que deve permanecer normal, os caracteres impressos são [r .

  • Se eu segurar [ por 3 segundos, [ será impresso. Eu quero que esse atraso seja aplicado a todas as minhas chaves modificadas.

  • Eu quero mapear para ' e os caracteres ' e para è .

    O problema complexo aqui é que eu só quero o ' ao lado da tecla ; para produzir o caractere è , NÃO quando eu pressionar < (remapeado para ' ) então e .

Mostrarei um arquivo .vimrc que implementa isso, agora quero esse comportamento em todo o sistema:

set timeout timeoutlen=3000 ttimeoutlen=100
inoremap [a â
inoremap [A Â
inoremap [e ê
inoremap [E Ê
inoremap [i î
inoremap [I Î
inoremap [o ô
inoremap [O Ô
inoremap [u û
inoremap [U Û

inoremap 'a à
inoremap 'A À
inoremap 'e è
inoremap 'E È
inoremap 'u ù
inoremap 'U Ù

inoremap }e ë
inoremap }E Ë
inoremap }i ï
inoremap }I Ï
inoremap }u ü
inoremap }U Ü

inoremap ]c ç
inoremap ]C Ç
inoremap / é
inoremap < '
    
por Gradient 22.08.2012 / 06:55

2 respostas

3

AutoHotKey , mencionado por harrymc, foi a solução.

Aqui está uma parte do código AutoHotKey que resolve meu problema específico. Letras faltantes podem ser facilmente adicionadas.

StringCaseSense On

; circumflex accents
$[::
Send [
Input, Char, T2 L1, {delete}{esc}{home}{end}
if Char = a
{
    Send {backspace}â
    return
}
Send %Char%
return

; grave accents
$'::
Send '
Input, Char, T2 L1, {delete}{esc}{home}{end}
if Char = a
{
    Send {backspace}à
    return
}
Send %Char%
return

; trema
+]::
Send {}}
Input, Char, T2 L1, {delete}{esc}{home}{end}
if Char = e
{
    Send {backspace}ë
    return
}
Send %Char%
return

; cedilla
$]::
Send ]
Input, Char, T2 L1, {delete}{esc}{home}{end}
if Char = c
{
    Send {backspace}ç
    return
}
Send %Char%
return

; other fixes
$<::
Send '
Input, Char, T2 L1, {delete}{esc}{home}{end}
if Char =
{
    Send {backspace}<
    return
}
Send %Char%
return

$/::
Send é
Input, Char, T2 L1, {delete}{esc}{home}{end}
if (Char = "")
{
    Send {backspace}/
    return
}
Send %Char%
return

$?::
Send É
Input, Char, T2 L1, {delete}{esc}{home}{end}
if (Char = "")
{
    Send {backspace}?
    return
}
Send %Char%
return
    
por 07.09.2012 / 06:00
3

AutoHotkey (AHK) pode fazer tudo isso e muito mais, mas só está disponível para Windows, que é onde eu tenho experiência com este maravilhoso gravador macro que cresceu em um ambiente de programação completo.

Para o Linux, existe uma versão multiplataforma que executa o AHK no Linux sob o .NET ou o MONO: IronAHK , mas eu não tenho experiência com isso.

O artigo Instalar o IronAHK no Linux pode ser útil.

    
por 06.09.2012 / 09:10