Linux - 如何將 CAPS LOCK 用作 SHIFT 和 BACKSPACE?

Linux - 如何將 CAPS LOCK 用作 SHIFT 和 BACKSPACE?

我希望能夠在按住鍵盤上的按鍵和釋放鍵時使用caps lock鍵盤上的按鍵(假設我在該時間間隔內沒有按任何其他按鍵)。我更喜歡本地解決方案(例如),但我不確定是否可以僅使用基本系統工具進行調整和按下。shift keybackspacexmodmapKEYUPKEYDOWN

答案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 我用它來映射controlescape到我的cabslock密鑰。作為一名vim用戶,kakoune我發現這非常有用。

PPS 抱歉,如果這個答案來得很晚,但這是我在谷歌上的最高結果,所以即使這對OP不再有用,其他人可能仍然會發現它有幫助。

相關內容