Xkbを使用して独自のキーボードレイアウトを作成しています。でも、ちょっと問題があります。
key <AE04> {[ Shift_L ]};
key <AE07> {[ Shift_R ]};
key <LFSH> {[ comma , semicolon , bar ]};
key <RTSH> {[ period , colon , period ]};
modifier_map Shift { <AE04>, <AE07> };
上記は、Shiftキーを他のキーに移動します。新しいシフトキーを押したときに実際に何かを実行させるには、modifier_map
行を追加する必要がありました。このコードは、古いシフトキーにも通常の文字を配置します。ここまでは順調ですね。
問題は、古い左シフトキーを押しながら文字を押すと(「a」としましょう)、「、A」が表示されることです。そのため、キーはコンマキーとしても機能しますおよびシフトキーとしても機能します。後者は望ましくありません。同じことが右の古いShiftキーでも起こります。実際、それはcontrolとaltでも起こります。
どうすればこれを解決できますか? modifier_unmap
か何かが必要なようです。
setxkbmap -print
を実行した後、pc
がシンボルリストに含まれていることに気付きました。そのシンボルファイルは、私が望まない通常の修飾子を設定します。
以前は、独自のレイアウトを/usr/share/X11/xkb/symbols
ディレクトリと/usr/share/X11/xkb/rules/evdev.xml
ファイルに追加していました。これにより、キーボードレイアウトを選択するためのレイアウトがGUIに表示されました。
解決策は、代わりにキーボードレイアウトを最初から作成することです。 notを含まないものには、pc
ファイルが含まれます。ただし、pc
には必要な標準キーボードがたくさんあります。それで、私はそのファイルを上から下まで読み、必要なものを選び出しました。
つまり、レイアウトを最初から作成するということは、基本的に次のことを意味します。
setxkbmap -print
の出力をファイルにコピーします。pc
を自分のファイルの名前に置き換えることを意味しました。xkbcomp -I$HOME/additional-include-folder file-from-step-one
を使用して新しいレイアウトを起動します。私はこの優れたガイドからこれを(より詳細に)学びました: http://hack.org/mc/writings/xkb.html 。