我希望能夠在按住鍵盤上的按鍵和釋放鍵時使用caps lock
鍵盤上的按鍵(假設我在該時間間隔內沒有按任何其他按鍵)。我更喜歡本地解決方案(例如),但我不確定是否可以僅使用基本系統工具進行調整和按下。shift key
backspace
xmodmap
KEYUP
KEYDOWN
答案1
我不知道有什麼本地方法可以做到這一點,但是X角劑量你想要的:
#!/usr/bin/env bash
# Remap the key to it's default behavior
# assuming `keycode 66` is your `caps lock`
# check using `xmodmap -pke | grep Caps_Lock`
xmodmap -e 'keycode 66 = Shift_L Shift_L Shift_L Shift_L Shift_L Shift_L'
# if you remaped your standard backspace key (skip
# this line if you didn't) it will no longer be
# available in the keymap but xcape needs it to be there.
# To fix this, pick a keycode that's
# not on your physical keyboard (find one using
# `xmodmap -pke`) and remap it to `BackSpace`. I will
# assume that `keycode 248` is unused:
xmodmap -e 'keycode 248 = BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace '
# kill `xcape` if it's already running so you don't
# get two competing instances
pidof xcape | xargs kill -1
# actually start xcape
xcape -e 'Shift_L=BackSpace'
將其放入腳本中並在啟動時運行它(當然是在測試之後)。
潛在問題:
不幸的是,這並不是 100% 可靠(至少在我的系統上),有時它會隨機停止工作。不過,重新運行腳本可靠地解決了這個問題。我設定了一個鍵盤快捷鍵(不受任何鍵盤重新映射的影響)來運行腳本,因此偶爾重新運行一次並不會太痛苦。
這將添加釋放時退格所有鍵的行為
Shift_L
。如果有任何(使用 查找xmodmap -pke | grep Shift_L
)您可能需要將它們重新對應到Shift_R
.有些應用程式似乎不受此影響。但這些確實很少見。我唯一遇到的是信號使者。也可能有一些視頻遊戲帶有自己的內建輸入系統,因此消除了任何系統級別的修改。
PS 我用它來映射control
和escape
到我的cabslock
密鑰。作為一名vim
用戶,kakoune
我發現這非常有用。
PPS 抱歉,如果這個答案來得很晚,但這是我在谷歌上的最高結果,所以即使這對OP不再有用,其他人可能仍然會發現它有幫助。