あるキーボードレイアウトから別のキーボードレイアウトに文字列を「翻訳」できるライブラリやツールはありますか?

あるキーボードレイアウトから別のキーボードレイアウトに文字列を「翻訳」できるライブラリやツールはありますか?

さまざまなキーボードレイアウト間で入力を変換する単純なbashスクリプトを作成したいと思います。たとえば、私のシステムにロシア語と英語のレイアウトがあり、「RudдЂ」文字列をこのスクリプトに渡すと、「Hello」を出力する必要があります。

現在、次のコードを使用しています。

echo "$@" | iconv -t cp1251 | tr $(echo "[йцукенгшщзхъфывапролджэ\\ячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,\"№;:?Ёё]" | iconv -t cp1251) "[qwertyuiop\[\]asdfghjkl;'\\zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:\"|ZXCVBNM<>?@#$^&~\`]"

明らかな欠点があります。

  • iconv私のシステムはutf8の使用にはtr使用できないため、使用する必要があります。
  • すべての文字を手動で入力する必要があるため、使いやすさがなく、エラーが発生する可能性が高くなりました。

同様の機能があることを知っていますが、xneurレイアウトを動的に切り替えたくないので、要求に応じて文字列を翻訳するだけです。ソースコードを見ましたが、xneur役に立つものが見つかりませんでした。

ベストアンサー1

私の考えでは一部このライブラリは存在しますか(Google内にのみ存在する場合)?例えば、https://www.google.com/search?q=hjccbzРоссияの結果を正しく表示します。合わないghbdn、しかし(おそらくこんなに приветの綴りを間違えるのが一般的な冗談だからでしょうか?)

実際にこれらの文字列を検索すると、明確で直接適用できるものはありませんが、いくつかの有望な結果が表示されます。

それにもかかわらず、自分のコードをスクリプトに入れない理由はありません。これにより、適切に再入力する必要がなくなります。

エディタでCP1251エンコーディングを使用してそれらを保存すると、ネストを回避できますiconv

#!/bin/sh
LC_ALL=C
iconv -t cp1251 |
tr 'йцукенгшщзхъфывапролджэ\ячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,"№;:?Ёё' "qwertyuiop[]asdfghjkl;'\\zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:\"|ZXCVBNM<>?@#$^&~\`"

考えるtr私が修正しようとしているパラメータの周りに角かっこが必要であるという誤った仮定があります。

PATH覚えやすく、入力しやすい名前で場所に保存するとchmod +xすぐに使用できます。

おすすめ記事