Linux — как использовать CAPS LOCK одновременно как SHIFT и BACKSPACE?

Linux — как использовать CAPS LOCK одновременно как SHIFT и BACKSPACE?

Я хочу иметь возможность использовать caps lockклавишу на моей клавиатуре как shift keyкогда я ее удерживаю и как backspaceкогда я отпускаю клавишу (при условии, что я не нажимал никаких других клавиш в этом интервале). Я предпочитаю собственное решение (такое как xmodmap), но я не уверен, возможно ли регулировать KEYUPи KEYDOWNнажатия, используя только основные системные инструменты.

решение1

Я не знаю никаких традиционных способов сделать это, ноxcapeдозируйте то, что хотите:

#!/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 messenger. Также могут быть некоторые видеоигры, которые поставляются со своей собственной встроенной системой ввода и, следовательно, вырезают любые изменения на системном уровне.

PS Я использую это для сопоставления controlи escapeс моим cabslockключом. Как пользователь vimи kakouneя нахожу это очень полезным.

PPS Извините, если ответ пришел слишком поздно, но это был мой лучший результат в Google, так что даже если это больше не будет полезно автору поста, другим это все равно может пригодиться.

Связанный контент