xkbcomp 自訂鍵盤按鍵
thinkpad 的 home 鍵太遠了不好按, 用 xkbcomp 把 super page up down 加上 home end 的效果,但只是抄來的 config, 不太知道意義;也不是所有情況都能用。
之前 acer 的鍵盤 page up down 在方向鍵上的左右邊,
fn page-up
就是 home,
在 firefox 等沒有 readline 不能用 C-a
的情況,
要移到行首行尾時很方便。
但 thinkpad 的 end home 是在鍵盤左上角, 和 esc f1-12 insert delete 同一排。 delete 在那個位置沒錯,insert 不會用到沒差, 只是 home 和 end 還算常用, 那麼遠就很不方便。
所以就 google 一下,看能不能讓某按鍵組合多出 home end 的效果。 fn 是硬體層級的,只能用 bios 裡那少得可憐的選項調,只能配 f1-12。 有找到叫 super hyper 的 modifier key 能用, 就綁到 super 也就是 win 上。
後來是照 stackoverflow 上一個綁方向鍵 的作法, 把他的方向鍵改成翻頁鍵,就算 config 好了。 用 xkbcomp 編譯更新, 詳細加到我的 git 了 。
共有 *.xkb
*.xkm
二種檔案。
xkb 是文字檔,和 C 的風格類似,可能是用 lex 和 yacc 做的,
和 C 一樣會分出一些標頭檔,分別是在 types 和 symbols,
編譯時要指定要去哪裡找標頭,會生出 xkm 檔,詳細寫在 makefile 裡。
xkbcomp *.xkm $DISPLAY
會把目前 X window 的鍵盤設置成 xkm 的樣子,
另外直接在編譯時指定 display 而不指定輸出,
就不會輸出 xkm,而直接把設定傳給 x server。
另外要讓 user 能 config 自己的 xkb,
我在 /etc/X11/Xsession.d 裡加了一個 56custom-xkb
,
如果 ~/.xkb/default.xkm
存在,就自動載入。
我覺得每次都重新編譯太麻煩,
所以是希望 user 自己編譯好,系統直接 source。
之前也有寫過一個 Xsession.d 的 script , 用來改觸控板和小紅點速度用的。 因為我覺得這台電腦的速度應該調到最快比較好用, 所以是每個使用者都會執行,調到最快。