让一些加拿大法语键盘敲击能够在英语键盘上使用

让一些加拿大法语键盘敲击能够在英语键盘上使用

我正在尝试在英语键盘上使用我习惯的一些加拿大法语键盘笔划。我想改变一些键的行为。我能够在 Vim 中实现这些更改,但我希望它们能够应用于整个系统(适用于 Windows 和 Ubuntu)。

以下是我想要实现的功能:

  • 如果我按下[a,打印的字符是â

  • 当我按下 时[r,一些本应保持正常的事情,打印的字符是 [r

  • 如果我按住[3 秒,[则会打印。我希望此延迟适用于我修改的所有键。

  • 我想要映射<'并将字符'e映射到è

    复杂问题这里我只想要按键'旁边的按钮;来产生è字符,不是当我按下<(重新映射到')时e

我将向您展示一个实现此功能的 .vimrc 文件,现在我希望整个系统都实现这种行为:

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 < '

答案1

自动热键(AHK) 可以做到所有这些,甚至更多,但只适用于 Windows,在 Windows 上我体验过这个出色的宏记录器,它已经发展成为一个完整的编程环境。

对于 Linux,有一个跨平台版本,可以在 .NET 或 MONO 下的 Linux 上运行 AHK:铁矿石,但我没有这方面的经验。

文章在 Linux 上安装 IronAHK可能会有用。

答案2

自动热键harrymc 提到的就是解决方案。

这是解决我特定问题的 AutoHotKey 代码的一部分。可以轻松添加缺失的字母。

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

相关内容