ドボラックとクォーティの切り替え

ドボラックとクォーティの切り替え

最近勉強を始めました。ドヴォルザークキーボードレイアウトがありますが、まだ使用する必要があります。フルキーボード時々。

2つのキーボードレイアウトを切り替えるスクリプトを探しています。

その上、私はこう呼びたい。スクリプトどこでも動作するショートカットが提供されます(私のDEで)。そして私のコンソールから。 ) は電源ボタンを押すのと同じです。この投稿

ベストアンサー1

Xと関心のある各タイプのテキストコンソールに対して別々にこれを行う必要があります。

任意のキーマップを切り替えるには状態を維持する必要があります。通常、コンソールはこれを行いません。これは、GnomeやKDEなどのレイアウトスイッチャーが行うことです。ただし、いくつかのよく知られているキーマップを切り替える場合は、コンソールに問い合わせて(この機能があなたのコンソールタイプで利用可能であると仮定して)、キー押下によって送信された現在のコードを取得し、そのコードに基づいて何に切り替えるかを決定できます。あります。以下はいくつかの可能性です。

  • キーコード24(コンソールタイプによって番号が異なる)が現在送信されている場合、q現在のキーマップはqwertyのように見えるため、dvorakに切り替え、それ以外の場合はqwertyに切り替えます。
  • Q隣接するキーコードがある場合は、WおそらくQuartyレイアウトになります。
  • キーマップに偽のキーを追加してバインディングを見つけます。

Wこれは= Q+1でテストされたXおよびLinuxの実装です。まだテストしたことはありませんので参考にしてください。このスクリプトは通常、テキストモードのリモートログインでは使用できません。

if [ -n "$DISPLAY" ]; then
  if xmodmap -pke | awk '$3=="=" && $4=="q" {q=$2}
                         $3=="=" && $4=="w" {w=$2}
                         END {exit w-q==1}'; then
    setxkbmap us
  else
    setxkbmap dvorak
  fi
elif [ "$TERM" = "linux" ]; then
  if dumpkeys | awk '$3=="=" && $4=="q" {q=$2}
                     $3=="=" && $4=="w" {w=$2}
                     END {exit w-q==1}'; then
    loadkeys us
  else
    loadkeys dvorak
  fi
fi

X Windowでキーにバインドするのに最適な場所は、デスクトップ環境またはウィンドウマネージャのキーバインディング機能を使用することです。キーにXの特定の部分だけを実行させることができます。もちろん、DE / WMにレイアウト切り替え機能がある場合はそれを使用することもできます。

Linuxコンソールでは、キーバインドの可能性が非常に制限されています。キーをシンボルにバインドできますKeyboardSignal。 SysVinitを使用している場合は、信号を押したときにスクリプトをrootとして実行してくださいkb::kbrequest:/path/to/script/etc/inittabUpstartを使用してこのキーの動作を設定する方法がわかりません。

おすすめ記事