6

Я переназначил ключ CapsLock для работы следующим образом:

CapsLock + J = левая клавиша со стрелкой
CapsLock + K = клавиша со стрелкой вниз
и т.п.

Я использовал xmodmap (как объяснено в разделе Отображение Super+hjkl на клавиши со стрелками под X).

Проблема в том, что я не могу заставить работать следующие комбинации клавиш:

Ожидается: CapsLock + Shift + J = Shift + стрелка влево
Фактически: CapsLock + Shift + J = ничего не делает.
и т.п.

У вас есть идеи, как заставить это работать? Благодарю.

5 ответов5

2

Не прямой ответ, но лучший способ подойти к этому - увидеть, какие события запускаются при нажатии интересующих вас комбинаций. Для этого установите xev и попробуйте различные комбинации.

2

У меня возникла та же проблема, и я спросил об этом в AskUbuntu. Проблема может быть решена путем:

установка параметра сохранения

отредактируйте /usr/share/X11/xkb/types/iso9995 и добавьте preserve[Shift+LevelThree] = Shift; такой, что содержимое файла выглядит так:

  partial default xkb_types "default" {

// A key type which can be used to implement
// an ISO9995-style level-three shift.

virtual_modifiers LevelThree;

type "THREE_LEVEL" {
    modifiers = Shift+LevelThree;
    map[None] = Level1;
    map[Shift] = Level2;
    map[LevelThree] = Level3;
    map[Shift+LevelThree] = Level3;
    preserve[Shift+LevelThree] = Shift;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Level3";
    };
};

настроить файл символов для желаемого макета

Отредактируйте файл раскладки клавиатуры в /usr/share/X11/xkb/symbols/ следующим образом (адаптируясь к вашим собственным потребностям)

key <AC06>  { type="THREE_LEVEL", [   h,   H, Left  ]   }; 
key <AC07>  { type="THREE_LEVEL", [   j,   J, Down  ]   }; 
key <AC08>  { type="THREE_LEVEL", [   k,   K, Up    ]   }; 
key <AC09>  { type="THREE_LEVEL", [   l,   L, Right ]   }; 

и не как

 ....
 key { [ j, J, Down, Down ] };
 ....
0

Если я хорошо понял, как это работает, попробуйте в файле спецификации клавиатуры явно сказать, что вы хотите, например, для того, чтобы он изменил действие, например

key { [ j, J, Down, Next ] };
key { [ k, K, Up, Prior ] }; 

иметь PageDn и PageUp --- я не могу проверить это сейчас, но должно работать.

0

Ваша проблема может заключаться в том, что capslock и shift практически одинаковы в оборудовании клавиатуры, возможно, ваша клавиша capslock просто постоянно вызывает нажатие клавиши shift.

-1

Я проверил много предложенных методов, но нашел, что это намного проще для реализации и понимания. Создайте файл nano ~/.my_keyboard , вставьте приведенный ниже код (измените отображение ключей в соответствии с вашим планом) и запустите xmodmap ~/.my_keyboard .

clear lock
keycode 66 = Mode_switch

keysym h = h H Left Left hstroke Hstroke
keysym j = j J Down Down dead_hook dead_horn
keysym k = k K Up Up lstroke ampersand
keysym l = l L Right Right lstroke Lstroke

Это отключает стандартную функциональность Caps Lock и переназначает ключ к модификатору Mode_switch . Для сброса настроек xmodmap вы можете запустить setxkbmap .

Вот оригинальное решение, которое я добавил.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .