2025-04-27

keyd default.conf 新嚐試

 主要修改是把幾個modifier加到home row,也就是ASDFGHJKL基本位這一行,讓手指不需移動到更遠的地方,能方便操作。以及加了timeout給幾個modifier,因為發現在不同鍵盤可能反應時間不同,如果不加timeout會出現非預期的結果。像是在terminal要打sudo時,會出現大寫U,打"cd空一格" 時會變成Ctrl+space呼叫中文輸入,在browser裡打字要打at時會變成Alt+T,要打do會變成Ctrl+O要Open file,要打dp會變成Ctrl+P列印頁面。

 所謂timeout指的是按鍵在按下後,在多少範圍時間內又放掉而且不搭配其他鍵,單位是millisecond。不加timeout的話,只要鍵被下去下後沒再同時按了別的鍵,放開後,就是做為單鍵用,不管這期間的時間長短。加timeout的話就限制要在這樣的時間內完成同時按別的鍵,才有效,否則做為單鍵用。

 至於該用多少的時隙值,目前以200為較符合我的鍵盤,這幾個timeout是從錯誤嚐試中評估出來的,用在別的鍵盤不一定適用,該用多長的timeout需要慢慢試,會因鍵盤或是個人的操作習慣而不同。

另外就是把「右Ctrl」改成當Meta用。(註:Meta在其他OS或軟體有叫做WindowsKey、或Super、或Command)

左手:
字母A鍵可以作為Alt功能
字母S鍵可以作為Shift功能
字母D鍵可以作為Ctrl功能
字母F鍵可以作為Meta功能
右手:
字母;鍵可以作為Alt功能
字母L鍵可以作為Shift功能
字母K鍵可以作為Ctrl功能
字母J鍵可以作為Meta功能

註: 如果有出現跟中文輸入衝突的情況,可以找一下中文輸入介面的設定,看有什麼按鍵可以改設定以避開衝突,我是用hime輸入介面,其中有一項是單按Shift可以輸入片語,我把它取消。

"overload"跟"overloadt"差別在尾巴那個"t",是用來指定該鍵單用的timeout,在這個時間範圍內做為單用,否則為組合用。

"caps" layer加了":C"來繼承Ctrl layer,讓CapsLock在指定那幾個字母組合裡有特殊用途,其餘便按照Ctrl一般使用,這裡還加了三個mouse作用,用來模擬成老鼠左、中、右三個按鈕,在操作瀏覽器或GUI軟體時可以用。

"navig" layer加了":A"繼承Alt layer,就是在指定的鍵之外,通通跟Alt鍵的使用一樣。

[ids]
*

[main]
capslock = overload(caps, C-space)
leftshift = overload(shift, M-a) 
rightshift = overload(shift, M-f)
rightalt = layer(rightalt)
leftalt = layer(navig)
rightcontrol = overload(candm, C-f12)
# 把「右Ctrl」指向自訂的 candm
# 以下的timeout都用200
a = overloadt(navig, a, 200)
s = overloadt(shift, s, 200)
d = overloadt(control, d, 200)
f = overloadt(meta, f, 200)
j = overloadt(meta, j, 200)
k = overloadt(control, k, 200)
l = overloadt(shift, l, 200)
; = overloadt(altgr, ;, 200)

[caps:C]
# 繼承Ctrl
f = esc
g = `
j = leftmouse
k = middlemouse
l = rightmouse
t = S-C-f

[candm:M]
# 不做任何指定,直接繼承Meta

[navig:A]
# 繼承Alt
i = up
j = left
k = down
l = right
h = home
' = end
y = backspace
p = pageup
u = delete
; = pagedown
m = mute
, = volumedown
. = volumeup
space = space
[ = A-left
] = A-right

[rightalt:A]
j = toggle(navig)

2025-04-18

在Linux使用非QMK鍵盤

 對於不是使用QMK firmware的鍵盤,我們還是可以用其他軟體來設定,之前用過xmodmap, setxkbmap, xcape來設定鍵盤,讓它更能快速、方便操作不同組合疊層(layer),但都需要交互搭配,使用起來有點麻煩。後來試用keyd之後發現前幾個都不必,只要一支keyd全部搞定!

 keyd的開發者還在繼續研發中,像device.c, config.c 最後更新時間是兩個禮拜前。keyd的config是純文字檔,位置在/etc/keyd/default.conf,相對的簡單明瞭,不像有些鍵盤設定軟體的config檔不太好維護。

 keyd是用C寫的,體積很小,執行檔不到兩百多KB,它是從kernel level來改變鍵盤行為與佈局,跟前面那幾支僅限在X11環境不同,所以keyd不論在X11/Wayland/tty console都能使用,反應速度快而且是透過systemctl來啟動、停止,簡單好用。

 如果請大家來投票鍵盤上哪個鍵最沒用?我想CapsLock應該會是第一名!它最沒用卻佔住最有用的位置之一,所以把它改成常用的功能吧!只要以下內容放在default.conf裡

[ids]
*
[main]
capslock = C-space 

這四行就足夠了,這樣按一下CapsLock就等同按Ctrl-space切換中文輸入程式

 不過這太簡單了,我們的需求應該不止這樣。鍵盤上另一個沒什麼用的按鍵就是右手下方的Ctrl,我把一個簡單的功能加給它,用來彈出或收回類比時鐘oclock,已經把它定義在fluxbox的「Control加F12」。當「右Ctrl」只按一下,而不跟任何鍵搭配時,就會執行「Ctrl-F12」呼叫出oclock。

 左或右的Shift僅按一下的話,便是用來切換左側或右側的桌面,fluxbox稱為NextWorkspace, PrevWorkspace,把它定義在fluxbox的「Super_L(左Win)-a」及「Super_L-f」。「左Alt」按住不放的同時再按[navig]所定義的某個鍵,可以「僅執行一次[navig]」的功能,「右Alt」跟「j」同時按住,可以鎖定[navig]功能,再一次按「右Alt」跟「j」解除已鎖定的[navig]功能。以下是我目前使用的設定例子:

[ids]
*
# *號的意思是宣告不限制特定輸入來源,凡接在這台電腦上的都受這個設定管控
[main]
capslock = overload(caps, C-space)
leftshift = overload(shift, M-a)
rightshift = overload(shift, M-f)
rightalt = layer(rightalt)
alt = overload(navig, leftalt)
rightcontrol = overload(control, C-f12)

# 以下自訂三個疊層 caps, navig, rightalt:A
[caps]
f = esc
g = `

[navig]
i = up
j = left
k = down
l = right
h = home
' = end
y = backspace
p = pageup
u = delete
; = pagedown
m = mute
, = volumedown
. = volumeup
n = M-n
space = space
[ = A-left
] = A-right
left = A-left
right = A-right

[rightalt:A]
j = toggle(navig)
# 這裡加了 :A 的意思是這個疊層除了按j用來固定(或解除)navig疊層之外,其餘都遵行原始的Alt搭配鍵。

CapsLock定義成 overload(caps, C-space) 意思是「按一下CapsLock」便執行Ctrl-space,如果搭配其他鍵,就執行「caps」這個自定疊層,當按住CapsLock以及f時,等同按了Esc,當按住CapsLock以及g時,等同按了「`」讓中文輸入列出同音字(例如在倉頡輸入時)。 A-left及A-right是定義成在terminator裡切換next_tab或prev_tab用。以上只是簡單的例子,大家可以根據自己的喜好任意修改,搭疊出更多好用的功能。
keyd可以找linux distribution本身repository裡的來用,或是抓github的source來安裝,keyd放在
https://github.com/rvaiya/keyd

2025-04-10

川普救地球

川普說要讓美國再次偉大,用的套路是關稅打遍全世界,不管遠親近鄰通通照打無誤。今天更是大打中國一巴掌,原本說好一巴掌只打104%關稅,現在狠狠的一巴掌力道提高到125%,中國開始滿地找牙。

川普關稅大棒開打,也打到全世界股民,人人哀哀叫,不過這其實蠻好的。

過去幾十年,中國利用取之不盡的低端人礦,藉著全球化,拼命生產低價商品,透過阿里巴巴、淘寶、蝦皮……讓全世界人類瘋狂消費。生產各種商品的同時當然也製造了二氧化碳,這是地球暖化的最佳推手之一。「世界工廠」到處賣廉價產品,也讓人們把還沒用壞的舊東西丟掉,因而製造更多垃圾。

這樣一直生產、一直消費的現象,更是一個無解的惡性循環,而且是一開動就停不下來,地球已經受夠了。現在神的使者川普幾個巴掌打下來,全世界生產的二氧化碳應該會少一點、地表上的垃圾也會少一點,總算可以給地球一個喘息的機會,從這個角度來看,川普真的在救地球。