Linux-Mint

我突然不能輸入等號 (=)

  • July 9, 2020

我看過其他幾個與此問題類似的文章,但我沒有運氣實施解決方案。如果有人可以找到解決此問題的現有文章,我很樂意將其標記為重複。

我不太確定時間,但也許在過去一周左右的時間裡,等號不再鍵入等號 (=)。我必須複製並粘貼它才能寫這篇文章。

同樣的症狀也延伸到板載鍵盤(不要與似乎沒有相等鍵的虛擬鍵盤混淆),所以這肯定不是硬體問題。

Shift + 等號鍵仍會鍵入加號 (+),但物理鍵盤上的組合鍵不會導致 Web 瀏覽器和大多數其他應用程序中的等號 (=)。到目前為止,我發現的物理鍵盤的兩個例外是 GNOME 終端。在終端中,Ctrl 或 Windows 鍵與等號的組合產生等號。此外,Windows 鍵和等號鍵在大多數文本編輯器(LibreOffice Writer、Visual Studio Code、Xed 文本編輯器)中鍵入等號。

在 tty (Ctrl + Alt + F2) 中,我也可以在沒有修飾鍵的情況下正常使用等號鍵。我只有在 Cinnamon 中才有問題。

我只有一種鍵盤佈局 - 英語(美國)。

系統規格:

System:
 Host:       {HostName}
 Kernel:     5.3.0-28-generic x86_64
   bits:     64
   compiler: gcc
   v:        7.4.0 
 Desktop:    Cinnamon 4.4.8
   wm:       muffin
   dm:       LightDM
 Distro:     Linux Mint 19.3 Tricia 
   base:     Ubuntu 18.04 bionic 
Machine:
 Type:       Laptop
 System:     Acer
   product:  Aspire A717-72G
   v:        V1.19
   serial:   <filter> 
 Mobo:       CFL
   model:    Charizard_CFS
   v:        V1.19
   serial:   <filter>
 UEFI:       Insyde
   v:        1.19 
   date:     07/13/2018 

過去幾周有核心更新。我已經避免將核心回滾到以前的版本,因為我不想開始抓住稻草並讓自己陷入更嚴重的麻煩,所以我想我會先發布這個。

更新:

正是我遇到的問題,但這個問題在 Windows 中。

我已經重新啟動了幾次,並且多次檢查了多個修飾符是否卡住了鍵,但無濟於事。在最終決定發布這個問題之前,我已經搞砸了幾天。如果它像重啟或卡住鍵一樣簡單,我希望現在已經看到了解決方案。

揭示了使用xev以下內容(我是新手xev,仍在學習這意味著什麼):

等價鍵:

KeymapNotify event, serial 28, synthetic NO, window 0x0,
keys:  66  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
      0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

我嘗試過的所有其他按鍵範例(即 Shift + 等號鍵):

KeyPress event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11019227, (-650,-317), root:(211,139),
state 0x10, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11019779, (-650,-317), root:(211,139),
state 0x11, keycode 21 (keysym 0x2b, plus), same_screen YES,
XLookupString gives 1 bytes: (2b) "+"
XmbLookupString gives 1 bytes: (2b) "+"
XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11019879, (-650,-317), root:(211,139),
state 0x11, keycode 21 (keysym 0x2b, plus), same_screen YES,
XLookupString gives 1 bytes: (2b) "+"
XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11020216, (-650,-317), root:(211,139),
state 0x11, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

相等的按鍵註冊為 KeymapNotify 事件而不是 KeyPress 事件。指定xev -event keyboard時,相等的按鍵(KeymapNotify 事件)會產生與滑鼠游標穿過固定視窗時相同的輸出。

有趣的是,使用 Shift 以外的修飾符(例如 Windows/Super、Ctrl 或 Alt)+ 等鍵會導致xev響應指示等號:

KeyPress event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11051562, (-650,-317), root:(211,139),
state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11051836, (-650,-317), root:(211,139),
state 0x18, keycode 21 (keysym 0x3d, equal), same_screen YES,
XLookupString gives 1 bytes: (3d) "="
XmbLookupString gives 1 bytes: (3d) "="
XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11051930, (-650,-317), root:(211,139),
state 0x18, keycode 21 (keysym 0x3d, equal), same_screen YES,
XLookupString gives 1 bytes: (3d) "="
XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x7800001,
root 0x242, subw 0x0, time 11052111, (-650,-317), root:(211,139),
state 0x18, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

用於xev | gawk '/keycode/{if($0!=l)print;l=$0;}'過濾掉多餘的數據,每次按鍵都會返回除等號外的一行(認為 Shift + 等號確實如此 - 參見第 3 和第 4 行)。

state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
state 0x10, keycode 20 (keysym 0x2d, minus), same_screen YES,
state 0x10, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
state 0x11, keycode 21 (keysym 0x2b, plus), same_screen YES,
state 0x11, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
state 0x14, keycode 54 (keysym 0x63, c), same_screen YES,
state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,

儘管鍵碼已映射,但 X 伺服器似乎沒有看到此按鍵:

xmodmap -pke | grep equal結果keycode 21 = equal plus equal plus

附加資訊:

$ setxkbmap -query
 rules:      evdev
 model:      pc105
 layout:     us
 options:    terminate:ctrl_alt_bksp`

我在 PuppyLinux 中遇到了同樣的問題,我可以輸入)但不能輸入0. 然後我嘗試了另一個 Linux 發行版,發現它可以正常工作。

這是我犯錯誤的原因:我最近添加了一個新的鍵綁定並錯誤地輸入了一個無效程式碼(我不記得是哪個),但這就是乾擾0字元的原因。

(旁注:我的視窗管理器是jwm或 Joe 的視窗管理器,但實際上,您使用哪個發行版或視窗管理器並不重要。)

**結論:**檢查自故障出現以來添加的任何新鍵綁定,無論是從設置自己的鍵綁定的新程序還是您自己添加的鍵綁定。

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