xmodmapエラー診断

xmodmapエラー診断

xmodmap以下を使用してCaps Lockを削除しようとすると、このエラーが発生します。

$ xmodmap -e 'clear Lock'
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  118 (X_SetModifierMapping)
  Value in failed request:  0x17
  Serial number of failed request:  8
  Current serial number in output stream:  8

xfceを実行しています。この問題は、パネルにキーボードレイアウトアプレットを追加するまでは発生しませんでした。それ以前は、xmodmapスクリプトを実行してEscとCapsLockを置き換えることができました。

!Remap Caps_Lock as Escape
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

これはキーボードレイアウト設定でキーボードスイッチの組み合わせとしてalt-capslockを選択したためです。

以前は、他のコンピュータでopenboxを実行しても同様の問題がありました。そのコンピュータからLucidにアップグレードしたときに問題が発生しました。一つ報告しました。抜け穴しかし、これが実際にxorgの問題なのか、それとも私の設定に問題があるのか​​はわかりません。

他の人がこの問題を経験したことがありますか?誰かがここで何が起こっているのか説明できますか?関連するレイヤーが多いようで、どんなものについても特に知識がないので、どんな情報でも役に立ちます。

修正する

特に、カナダのレイアウトバリアントである「多言語」(ca-multix)を追加して問題が発生したことがわかりました。代わりに、「多言語(パート1)」(ca-multi)バリアントを追加しても問題は発生しません。これが最終的には解決可能な解決策になる可能性があると思いますが、バリエーションの違いは何であるかまだわかりません。

無料デスクトップの問題、さんがコメントしています。Ubuntuの問題

答え1

最新のXorgはXKB拡張機能を使用してキーボードレイアウトをサポートしています。 Xmodmapは互換性レイヤを介してエミュレートされますが、いくつかの欠点があります。 XKBを完全に無効にすると、Xorgは以前のXmodmapキーマップを使用するように戻ります。私の考えでは、xorg.confでXkbDisableオプションをtrueに設定しているようですが、これを行うにはXKBメソッドを使用することもできます。 /usr/share/X11/xkb/rules/xorg.xmlには設定可能なオプションがたくさんあります。 Caps LockとEscapeを変更するには、caps:swapescapeが必要だと思います。 setxkbmap -option caps:swapescape を試してください。

答え2

別の修飾子キーに追加された修飾子にキー記号を追加しようとすると、問題が発生します。 1 つのキーシンボルを修飾子に追加する場合は、そのキーシンボルで使用される他のすべてのキーシンボルもその修飾子に追加されることを知ることが重要です。

たとえば、

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

続くことができます

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

なぜなら、あなたは次のようなものを持っているからです

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

〜/ .Xmodmap(または.xmodmap、...)の「」を使用して、現在のキーコードとキーシンボルのマッピングを表示できます。xmodmap-pke")

次の操作を試行すると、問題のある BadValue エラーが発生します。

add lock    = Caps_Lock

Mod5修飾子にCaps_Lockが追加されたためです。

答え3

setxkbmap -option caps:escape # use caps as esc

または

setxkbmap -option caps:swapescape # to swap caps with esc

関連情報