Linux - SHIFT와 BACKSPACE 모두로 CAPS LOCK을 사용하는 방법은 무엇입니까?

Linux - SHIFT와 BACKSPACE 모두로 CAPS LOCK을 사용하는 방법은 무엇입니까?

caps lock나는 키보드의 키를 shift key누르고 있을 때와 키를 놓을 때처럼 사용할 수 있기를 원합니다 backspace(해당 간격 동안 다른 키를 누르지 않았다면). 나는 기본 솔루션(예: )을 선호 하지만 기본 시스템 도구만 사용하여 조절 하고 누르는 xmodmap것이 가능한지 잘 모르겠습니다 .KEYUPKEYDOWN

답변1

나는 그것을 수행하는 기본 방법을 모르지만엑스케이프당신이 원하는 복용량:

#!/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.

  • 이것의 영향을 받지 않는 것으로 보이는 응용 프로그램이 있습니다. 하지만 그런 경우는 정말 드뭅니다. 내가 만난 유일한 사람은 Signal 메신저입니다. 입력 시스템에 자체 빌드가 포함되어 시스템 수준 수정이 필요 없는 비디오 게임도 있을 수 있습니다.

PS 저는 이것을 사용하여 control와 키 escape를 모두 매핑합니다 cabslock. vim사용자 로서 kakoune나는 이것이 매우 유용하다고 생각합니다.

PPS 이 답변이 너무 늦게 나왔다면 죄송합니다. 하지만 이는 Google에서 가장 높은 결과였으므로 OP에 더 이상 유용하지 않더라도 다른 사람들에게는 여전히 도움이 될 수 있습니다.

관련 정보