Заставьте мышку двигаться с разной скоростью в зависимости от модификаторов

211
philh

У меня есть настройки XKB, так что если я удерживаю caps lock, мои HTNS-ключи (эквивалент qwerty будет JKL;) работают для перемещения мыши.

Теперь я хочу, чтобы мышь перемещалась на меньшее расстояние, если я также удерживаю клавишу Shift. Но я не могу понять это.

Это дает мне основные движения:

interpret Pointer_Left { repeat= True; action= MovePtr(x=-100,y=+0); }; 

и он перемещается на 100 пикселей, независимо от того, удержал ли меня сдвиг или нет.

Чтобы получить сменное поведение, я пробовал разные вещи. Кажется, это работает точно так же, как и выше:

interpret Pointer_Left { repeat= True; action= MovePtr(x=-100,y=+0); }; interpret Pointer_Left+AnyOf(Shift) { repeat= True; action= MovePtr(x=-10,y=+0); }; 

Между тем, это полностью отключает поведение, я вообще не могу переместить мышь влево с помощью клавиатуры:

interpret Pointer_Left+NoneOf(Shift) { repeat= True; action= MovePtr(x=-100,y=+0); }; interpret Pointer_Left+AnyOf(Shift) { repeat= True; action= MovePtr(x=-10,y=+0); }; 

и так (где я полностью удаляю действие -100):

interpret Pointer_Left+AnyOf(Shift) { repeat= True; action= MovePtr(x=-10,y=+0); }; 

Я также попробовал два определения для привязанного к нему ключа, не замечая никаких изменений в поведении:

key <AC07> { type= "FOUR_LEVEL_SEMIALPHABETIC", symbols[Group1]= [ h, H, Pointer_Left, Pointer_Left ] }; 

а также

key <AC07> { type= "THREE_LEVEL", symbols[Group1]= [ h, H, Pointer_Left ] }; 

где эти типы определены как

type "THREE_LEVEL" { modifiers= Shift+LevelThree; map[Shift]= Level2; map[LevelThree]= Level3; map[Shift+LevelThree]= Level3; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; level_name[Level3]= "Level3"; };  type "FOUR_LEVEL_SEMIALPHABETIC" { modifiers= Shift+Lock+LevelThree; map[Shift]= Level2; map[Lock]= Level2; map[LevelThree]= Level3; map[Shift+LevelThree]= Level4; map[Lock+LevelThree]= Level3; preserve[Lock+LevelThree]= Lock; map[Shift+Lock+LevelThree]= Level4; preserve[Shift+Lock+LevelThree]= Lock; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; level_name[Level3]= "Alt Base"; level_name[Level4]= "Shift Alt"; }; 
0

0 ответов на вопрос