让一些法语 - 加拿大键盘笔划在英文键盘上工作


1

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

这是我想要实现的:

  • 如果我按 [ 一个 ,印的人物是 â

  • 当我按下 [ [R 一些应该保持正常的东西,打印的字符是 [r

  • 如果我坚持 [ 持续3秒 [ 打印出来。我希望将此延迟应用于我修改过的所有键。

  • 我想要地图 < ' 和人物 Ë è

    复杂的问题 这是我只想要的 在旁边 ; 生产的关键 è 字符, 当我按下 < (重新映射到 ' ) 然后 Ë

我将向您展示一个实现此目的的.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 < '

为什么不简单地切换到fr-CA键盘?
kinokijuf

1
我发现英文键盘更容易用于像 [{"@等等,当我编写代码时。我总是需要擦除因为我没有切换键盘而且令人沮丧。
Gradient

美国国际键盘上没有法语字母吗?
kinokijuf

是的,我想到了这一点,但口音与法国 - 加拿大键盘不在同一个地方。他们甚至很难快速打字。示例:à键入为 `, 然后 a。如果必须输入这两个字符,则无法保持良好的输入流程。
Gradient

Answers:


3

AutoHotkey的 (AHK)可以完成所有这些以及更多功能,但仅适用于Windows, 这是我有经验的这个美妙的宏录音机已经成长 进入一个完整的编程环境。

对于Linux,有一个跨平台版本在.NET或MONO下在Linux上运行AHK: IronAHK , 但我没有经验。

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


很高兴听到有一个适用于Linux的AHK。
Tom Wijsman

3

AutoHotkey的 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

干得好。你应该得到赏金,因为你实际上表现出来了 怎么样 通过提供一个来实现它 实际的脚本 而不只是一个通用的,自己想出来的链接。我打算写一个这样的剧本,但你已经完成了。 +1
Synetech
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.