Debian

重新分配 Ctrl 和 Alt 鍵 - xmodmap ‘BadValue’ 錯誤

  • November 16, 2017

我正在嘗試重新映射我的鍵盤以使 emacs 可用。我的人體工學鍵盤將其單個控制鍵放在左側的一個孤立的 4 鍵島中。

作業系統是 Debian 擠壓。

以下是我嘗試輸入的行xmodmap,我將它們放入文件 ~/.Xmodmap:

清除控制
清除 Mod1
!Alt 鍵在我的鍵盤上標有“選項”,
!使用 xev 顯示它們分別發送 Alt_L 和 Alt_R 鍵符
鍵符 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 為相關鍵輸出的鍵碼和鍵消息。請注意,我的鍵盤(Goldtouch 人體工學鍵盤)只有一個控制鍵。

鍵碼 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,count 1

MappingNotify 事件,序列號 34,合成 NO,視窗 0x0,
請求 MappingKeyboard,first_keycode 64,count 1

MappingNotify 事件,序列號 34,合成 NO,視窗 0x0,
請求 MappingKeyboard,first_keycode 108,count 1

MappingNotify 事件,序列號 34,合成 NO,視窗 0x0,
請求 MappingKeyboard,first_keycode 206,count 1

MappingNotify 事件,序列號 34,合成 NO,視窗 0x0,
請求 MappingKeyboard,first_keycode 133,count 1

MappingNotify 事件,序列號 34,合成 NO,視窗 0x0,
請求 MappingKeyboard,first_keycode 134,count 1

這是返回的錯誤xmodmap

X Error of failed request: BadValue (integer parameter out of range for operation)
失敗請求的主要操作碼:118 (X_SetModifierMapping)
失敗請求中的值:0x17
失敗請求的序列號:17
輸出流中的目前序列號:17

關於如何解決這個問題的任何建議?

這已經被報告為Debian 錯誤 #564327Debian 錯誤 #565279Ubuntu 錯誤 #524774FreeDesktop 錯誤 20145。FreeDesktop 錯誤討論附帶了一個原始碼更新檔。Ubuntu 錯誤討論中有幾個解決方法建議,特別是一種.Xmodmap解決方法

查看 Giles 連結的解決方法,這對我有用:

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

我的 Option 鍵現在像 Control 鍵一樣起作用,而我的 Windows 鍵像 Alt 鍵一樣起作用。

引用自:https://unix.stackexchange.com/questions/4485