私はドイツ語のレイアウトが気に入らないので、主に私のデバイスでUSレイアウトを使用しますが、Composeを押してä、ö、ü、ßなどを入力する必要があるのは面倒です。 Windowsには、入力時にoeをöなどに置き換えるAutoHotKeyスクリプトがあります。私のキーボードにあります。「ホットストリング」オプション。 Linuxでこれを得るために使用できるプログラム/ハッキングはありますか?
以下は、WindowsでAutoHotKeyを使用するスクリプトです。
:*?:ue::ü
:*?:ae::ä
:*?:oe::ö
:*?:sss::ß
入力すると、次のように表示されます。
編集:明確にするために、X11サーバーでグローバルに実行したいです。再起動を必要とせずにオンとオフを切り替えることができれば本当に良いようです(ドイツ語のテキストを入力するときにのみ必要です)。私が使用するi3wmは完全なデスクトップ環境を備えていませんが、必要に応じてDEプログラムをインストールできます。さらに、私はいたずらをしています。リビオフックatmを使用し、おそらく一緒にハッキングしてこれを行うことができます。うまくいけばここで更新します。 :)
答え1
XはMulti_keyキー(またはCompose)を認識し、Gnomeなどのデスクトップ環境では、キーボードのWindowsキーなどのキーをComposeキーとして使用できます(Gnomeキーボード設定で構成可能)。
デフォルトではCompose-o-e
– が生成されます。
Xはöを生成する二重引用符を介してöを提供しましたCompose-"-o
(そしてCompose-"-a
äなどを生成します)。
これを上書きするには、~/.XCompose
たとえばカスタム設定を作成できます。
# This file defines custom Compose sequences for Unicode characters
# Import default rules from the system:
include "%L"
<Multi_key> <o> <e> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIARESIS
追加のドキュメントはで確認してくださいman XCompose
。
このメソッドはxmodmapに関連しています。https://wiki.debian.org/XCompose
編集するA:しかし、質問は方法を尋ねます。いいえCompose(例:Multi_key)を使用してください。 Composeフレームワークはすべてのキーストロークを処理するため、問題の特定の要件に合わせて調整してoとeを直接再処理してöを形成することもできます。
<o> <e> : "ö" odiaeresis # LATIN SMALL LETTER O WITH DIARESIS
答え2
いいですね。これが最善の解決策ではありませんが、うまくいきます。
node.jsと依存関係のインストールhttps://github.com/kwhat/libuiohook、npm i @nut-tree/nut-js uiohook-napi
ノードでこのファイルを実行してから実行します。
let binds = [
["ae", "ä"],
["oe", "ö"],
["ue", "ü"],
["sss", "ß"],
]
let sleep = ms => new Promise(r=>setTimeout(r,ms))
let {keyboard, Key, clipboard} = require("@nut-tree/nut-js");
let {uIOhook: io, UiohookKey: K} = require('uiohook-napi')
let maxlen = Math.max(...binds.map(e=>e[0].length))
binds=binds.map(e=>({len: e[0].length, keys: e[0].split('').map(f=>K[f.toUpperCase()])+'', out: e[1]}))
let last=Array(maxlen).fill(-1)
io.on("keydown", async e=>{
last.push(e.keycode)
last.shift()
let cur = last+''
let find = binds.find(e=>cur.endsWith(e.keys))
if (find) {
for (let i=0;i<find.len;i++) { await keyboard.type(Key.Backspace) }
let cb = await clipboard.paste()
await clipboard.copy(e.shiftKey ? find.out.toUpperCase() : find.out)
await sleep(10)
await keyboard.type(Key.LeftControl, Key.V)
await sleep(10)
await clipboard.copy(cb)
}
})
io.start()
これより良いものを見つけたら教えてください。この解決策は非常に古いです。笑
答え3
私はアメリカの国際キーボードを使用しています。したがって、ドイツ語の特殊文字は、キーボードレイアウトの3番目と4番目のレベルにあります。
> cat .Xkbmap
-layout us
-variant altgr-intl
! if gnome-settings-daemon is installed execute :
! gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+altgr-intl')]"
! gsettings set org.gnome.desktop.input-sources xkb-options "['lv3:caps_switch', 'terminate:ctrl_alt_bksp']"
-option lv3:caps_switch
-option terminate:ctrl_alt_bksp