我突然不能輸入等號 (=)
我看過其他幾個與此問題類似的文章,但我沒有運氣實施解決方案。如果有人可以找到解決此問題的現有文章,我很樂意將其標記為重複。
我不太確定時間,但也許在過去一周左右的時間裡,等號不再鍵入等號 (=)。我必須複製並粘貼它才能寫這篇文章。
同樣的症狀也延伸到板載鍵盤(不要與似乎沒有相等鍵的虛擬鍵盤混淆),所以這肯定不是硬體問題。
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 的視窗管理器,但實際上,您使用哪個發行版或視窗管理器並不重要。)**結論:**檢查自故障出現以來添加的任何新鍵綁定,無論是從設置自己的鍵綁定的新程序還是您自己添加的鍵綁定。