CtrlキーとAltキーの再割り当て-xmodmap 'BadValue'エラー


13

emacsを使用可能にするために、キーボードを再マップしようとしています。私の人間工学に基づいたキーボードは、その単一のコントロールキーを、孤立した4キーアイランドの左側に置きます。

OSはDebianスクイーズです。

フィードしようとしている行はxmodmap次のとおりです。ファイル〜/ .Xmodmapに配置します。

クリアコントロール
Mod1をクリア
!Altキーはキーボードの「オプション」と表示されていますが、
!xevを使用すると、Alt_LおよびAlt_Rキーシムをそれぞれ送信することが示されます。
keysym Alt_L = Control_L
キーシムAlt_R = Control_R
!Super_LおよびSuper_RキーはWindowsキーです
キーシムSuper_L = Alt_L
キーシムSuper_R = Alt_R
コントロールを追加= Control_L Control_R
Mod1を追加= Alt_L Alt_R

私の目標は、Option(別名Alt)キーをControlキーのように動作させ、Windows(別名Super)キーをのように動作させることですAlt

以下は、問題のキーに対してxevが出力するキーコードとkeysmsです。私のキーボード(Goldtouchエルゴノミックキーボード)には、コントロールキーが1つしかありません。

キーコード37(keysym 0xffe3、Control_L)
キーコード64(keysym 0xffe9、Alt_L)
キーコード133(keysym 0xffeb、Super_L)
キーコード134(keysym 0xffec、Super_R)
キーコード108(keysym 0xffea、Alt_R)

実行中にxevが表示するものを次に示します xmodmap .Xmodmap

MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、
    要求MappingKeyboard、first_keycode 204、カウント1

MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、
    要求MappingKeyboard、first_keycode 64、カウント1

MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、
    要求MappingKeyboard、first_keycode 108、カウント1

MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、
    リクエストMappingKeyboard、first_keycode 206、カウント1

MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、
    要求MappingKeyboard、first_keycode 133、カウント1

MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、
    要求MappingKeyboard、first_keycode 134、カウント1

そして、次のエラーが返されxmodmapます:

X失敗したリクエストのエラー:BadValue(整数パラメーターが操作範囲外)
失敗したリクエストのメジャーオペコード:118(X_SetModifierMapping)
失敗したリクエストの値:0x17
失敗したリクエストのシリアル番号:17
出力ストリームの現在のシリアル番号:17

これを解決する方法についての提案はありますか?


どのオペレーティングシステムとバージョンですか?どのような種類のキーボード(PC / Mac / Sun / ...)?走ってみxevた後、ターミナルでxmodmap別の端末に。MappingNotifyからいくつかのスタンザが表示されるはずxevです。質問に追加してください。また、xevウィンドウで、関連するさまざまなキーを押して、対応するキーコードとキーシムを教えてください(xev出力の「キーコード37(keysym 0xffe3、Control_L)」の部分)。
ジル「SO-悪であるのをやめる」

回答:



7

ジャイルズによってリンクされた回避策を見ると、これは私のために働いたものです:

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R

オプションキーはコントロールキーのように機能し、WindowsキーはAltキーのように機能するようになりました。


3

別の修飾キーにすでに追加されている修飾キーにキーシムを追加しようとすると、問題が発生します。修飾子にキーシムを追加すると、キーシムをコンパニオンする他のすべてのキーシムもその修飾子に関して追加されることを知っておくことが重要です。

例えば:

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(現在のキーコードからkeysymへのマッピングを表示するxmodmap -pke

次のようなことをしようとすると、問題のBadValueエラーが発生します

add lock    = Caps_Lock

Caps_Lockはすでにmod5修飾子に追加されているためです。


2

これはあなたの問題に対する別の解決策ですが、実際にはあなたの質問には答えません。xorg.confを編集して、次のセクションを「InputDevice」セクションに挿入します。

 Option "XkbOptions" "ctrl:swapcaps"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.