驗證 ~/.XCompose
我正在努力在
~/.XCompose
. 隨著我添加越來越多的序列,有時我會打錯字或對不同的符號使用相同的序列。例子:
錯字/不存在的程式碼
<Multi_key> <non-existent-keysym> : other-non-existent-keysym
完全碰撞
<Multi_key> <a> <b> : x # overrule by 2nd rule <Multi_key> <a> <b> : y
前綴衝突
<Multi_key> <a> <b> <c> : y <Multi_key> <a> <b> : x # overruled by 1st rule
問題
是否有驗證我的
~/.XCompose
文件的命令。最低要求是二進制答案:要麼 »您的 XCompose 沒有錯誤« 或 »您的 XCompose 包含錯誤«。如果出現錯誤,歡迎提供有用的錯誤消息,例如 »規則序列前綴衝突 «。我試過的
我創建了
~/.XCompose
包含上面的所有錯誤並打開了一個文本編輯器。文本編輯器沒有顯示錯誤(在控制台上)。正確且不被否決的序列有效,所有其他序列都被忽略。我讀了
man 5 XCompose
。在文件本身中,我發現沒有任何幫助。我查看了末尾的參考資料man 5 XCompose
。看起來很有希望(從Google搜尋的manpagemkcomposecache(1)
判斷),但在我的系統上似乎缺少(Linux Mint 18.3)。既沒有也找不到任何東西。man -k mkcomposecache``apt search mkcomposecache
**編輯:**正如@quixotic 所建議的,我
mkcomposecache
從原始碼編譯並執行它,但它的退出狀態是1
,無論我選擇什麼撰寫文件(有或沒有錯誤)。沒有錯誤資訊。不生成記憶體。我如何呼叫程序的範例:$ mkcomposecache en_US.UTF-8 /usr/share/X11/locale/en_US.UTF-8/Compose /tmp/ * XOpenDisplay: Success $ echo $? 1
該文件
/usr/share/X11/locale/en_US.UTF-8/Compose
是 Ubuntu 的原始撰寫文件,應該沒有錯誤。我想它沒有打包在 Ubuntu 和 Arch Linux 儲存庫中是有原因的。我懷疑這
mkcomposecache
是我需要的,即使它會起作用。
我對這個擴展進行了逆向工程,並將其製成了一個小網路應用程序。
你可以在這裡使用它:https ://jsfiddle.net/9p1s60of/
這是該工具的執行圖像:
有點粗糙,但你可以使用關聯數組快速破解一些東西,例如
awk
:對於像這樣的輸入文件
<Multi_key> <a> <t> : y <Multi_key> <a> <g> : y <Multi_key> <a> <b> : x <Multi_key> <a> <b> : y <Multi_key> <a> <x> <c> : y <Multi_key> <a> <x> : x <Multi_key> <a> <g> : Q <Multi_key> <a> <n> : y
這個命令
awk '!d[$2][$3]{d[$2][$3]=1;next} {print $0 " PROBLEM!"}' myFile
將輸出
<Multi_key> <a> <b> : y PROBLEM! <Multi_key> <a> <x> : x PROBLEM! <Multi_key> <a> <g> : Q PROBLEM!
還要查看它與之衝突的行:
awk 'c=d[$2][$3]{print $0 " COLLISION: " c;next} {d[$2][$3]=$0}' myFile
結果:
<Multi_key> <a> <b> : y COLLISION: <Multi_key> <a> <b> : x <Multi_key> <a> <x> : x COLLISION: <Multi_key> <a> <x> <c> : y <Multi_key> <a> <g> : Q COLLISION: <Multi_key> <a> <g> : y