NetBSDでUS AltGr-Intlレイアウトを効率的に取得するには?

NetBSDでUS AltGr-Intlレイアウトを効率的に取得するには?

アメリカのレイアウトに切り替えた後、wsconsctl -w encoding=usキーマップを自分の方法で変更する方法を探しています。

私はそうしました:

wsconsctl -w map+="keycode 1 = Cmd_Debugger Caps_Lock"
wsconsctl -w map+="keycode 58 = Escape"

大文字のロックキーとEscキーを置き換えます(私はVimユーザーなので、このスワップは意味があります)。

私はwsconsctl mapsetを見つけましたがkeycode 184 = Mode_switch Multi_key、私が理解したところによると、これはAltGrドイツ語のキーボードで使用する機能です。

キーコードを184に設定してみましたがMode_switch(通常はAlt_R何もしません)、それが何をしているのか完全に理解できませんでしたAltGr

NetBSDはUS AltGr-Intlバリアントに付属していないようですので、少なくとも定義したいと思います。一部私はキー(例えばドイツ語のウムラウト)が必要であり、AltGr-Intlバリアントをこのように「バックポート」しました。

だから私が最初に試したことはwsconsctl -w map+="keycode 16 = q Q adiaeresis Adiaeresis"

AltGrこれを行うときに+:と入力すると、コンソールに奇妙なエラーコードが表示されますq<00ef>utf-8コードや私のコードに似ているようです。とにかく予想通り「ä」は生成されません。また、キーマップの内容を確認すると、変更後に次のことが発生します。

# wsconsctl map | grep -i "code 16"
keycode 16 = q Q adiaeresis gr_D

「」gr_D?それはどこから来たの?どんな理由からなのか192行目にあるのに、次のような内容wsconsctlが気に入らないようです。Adiaeresis/usr/include/dev/wscons/wsksymdef.h

#define    KS_Adiaeresis    0xc4

私はこれがすべてのキャラクターに起こるわけではないことがわかりました。マッピングしようとしましたが、wsconsctl -w map+="keycode 16 = q Q at at"うまく動作します。その後、AltGr+をクリックして「@」と入力できますq

また、ログインプロンプトで長押しすると特殊文字を入力できます。ユーザー名をAltGr入力してもäåéóöëíúáßðfø¶œï問題ありません。しかし、一度ログインすると、USエンコーディングがロードされるように見え、それ以降は一般的なUSレイアウトになります。 。

AltGrデフォルトでは、または右のAltキーを押し続けて特殊(ラテン語)文字を入力できるというアイデアです。

オペレーティングシステムはNetBSD 7.0 / amd64であり、amd64ホスト(Linux)のVMで実行されます。

関連情報