Membuat beberapa ketukan keyboard Prancis-Kanada berfungsi pada keyboard bahasa Inggris

1

Saya mencoba menggunakan beberapa stoke keyboard Prancis-Kanada yang biasa saya gunakan pada keyboard Inggris. Saya ingin mengubah perilaku beberapa tombol. Saya bisa menerapkan perubahan ini di Vim, tapi saya ingin mereka diterapkan di seluruh sistem (untuk Windows dan Ubuntu).

Inilah yang ingin saya terapkan:

  • Jika saya menekan [a, karakter yang dicetak adalah â.

  • Ketika saya menekan [r, sesuatu yang seharusnya tetap normal, karakter yang dicetak adalah [r.

  • Jika saya tahan [selama 3 detik, [dicetak. Saya ingin penundaan ini diterapkan ke semua kunci saya yang dimodifikasi.

  • Saya ingin memetakan <ke 'dan karakter 'euntuk è.

    Masalah kompleks di sini adalah bahwa saya hanya ingin tombol 'samping ;untuk menghasilkan èkarakter, BUKAN ketika saya menekan <(remapped to ') lalu e.

Saya akan menunjukkan kepada Anda file .vimrc yang mengimplementasikan ini, sekarang saya ingin seluruh perilaku sistem ini:

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 < '
Gradien
sumber
Mengapa tidak beralih saja ke keyboard fr-CA?
kinokijuf
1
Saya menemukan keyboard bahasa Inggris menjadi lebih mudah digunakan untuk kunci seperti [, {, ", @, dll ketika saya sedang menulis kode misalnya. Saya selalu harus menghapus karena saya tidak mengganti keyboard dan itu membuat frustrasi.
Gradient
Tidakkah huruf-huruf Prancis tersedia di keyboard AS-internasional?
kinokijuf
Ya, saya memikirkan hal itu tetapi aksennya tidak pada tempat yang sama seperti pada keyboard Prancis-Kanada. Mereka bahkan sangat sulit untuk mengetik cepat. Contoh: à diketik dengan `, lalu a. Anda tidak dapat mempertahankan alur pengetikan yang baik jika Anda harus mengetikkan kedua karakter tersebut.
Gradient

Jawaban:

3

AutoHotkey (AHK) dapat melakukan semua ini dan banyak lagi, tetapi hanya tersedia untuk Windows, yang merupakan pengalaman saya dengan perekam makro yang luar biasa ini yang telah tumbuh menjadi lingkungan pemrograman yang lengkap.

Untuk Linux, ada versi lintas platform yang menjalankan AHK di Linux di bawah .NET atau MONO: IronAHK , tapi saya tidak punya pengalaman dengannya.

Artikel Instal IronAHK di Linux mungkin berguna.

harrymc
sumber
Senang mendengar ada AHK untuk Linux.
Tamara Wijsman
3

AutoHotKey , yang disebutkan oleh harrymc, adalah solusinya.

Ini adalah bagian dari kode Autohotkey yang memecahkan masalah spesifik saya. Huruf yang hilang dapat dengan mudah ditambahkan.

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
Gradien
sumber
Kerja bagus. Anda seharusnya mendapatkan hadiah karena Anda benar-benar menunjukkan cara mengimplementasikannya dengan memberikan skrip yang sebenarnya alih-alih hanya tautan generik, cari tahu sendiri. Saya akan menulis skrip seperti ini, tetapi Anda sudah melakukannya. +1
Synetech