Автоматическое связывание клавиш (CapsLock+D+J) для (Удалить)
Я пытаюсь перегрузить клавиатуру.
CapsLock & J:: Send {Left}... это стрелка влево, вы можете угадать другие направления.
CapsLock & H:: Send ^ {Left}... это слово перехода влево.
Я начал добавлять много лишних, и у меня кончились ключи, поэтому я подумал, что хотел бы ввести дополнительные модификаторы, например D, например de Delete Delete. CapsLock + D +J удалит символ слева (например, клавиша Backspace), CapsLock+D+L удалит символ справа (например, клавиша Delete).
Кроме того, S будет моим модификатором Speedy, таким как Ctrl, что означает "прыгать слова". Так что CapsLock + S + D +J удалит слово слева.
Если бы я мог только... -привязать к 3+ ключам, это решило бы это. -привязать к любому keyup / down и обработать его в блоках if-else, что бы это решило.
Идеи приветствуются.
2 ответа
Три модификатора, как CapsLock & H & D
не может быть использован.
Вы можете использовать GetKeyState и комбинировать его с горячими клавишами и оператором if или switch для создания любой комбинации.
Уловка, чтобы поймать любое событие keyup/down, состоит в следующем:
*d::msgbox, d down
*d up::msgbox, d up
Обратите внимание, что "d down" срабатывает много раз, пока вы не отпустите его. *
обозначает любые клавиши-модификаторы, такие как shift / alt / ctrl / win (или ничего).
Чтобы справиться с чем-либо, я использую sg. как это:
updateState(key, dir) {..}
*a::updateState("a", "down")
*a up::updateState("a", "up")
*b::updateState("b", "down")
*b up::updateState("b", "up")
*c::updateState("c", "down")
...
и я храню все ключевые состояния мне нужно в переменных, как key_a
, key_b
, key_capslock
..
Кроме того, текущее событие находится в переменной, как a_down
, a_up
, b_down
, b_up
..
Тогда я могу использовать операторы if-else, такие как
if(key_capslock and key_d and key_f and j_down) {
; do whatever
}
Нет, я не могу распознать снижение скорости при наборе текста.
Если CapsLock не нажата, я использую следующее, чтобы "пройти" нормальную функциональность клавиатуры:
; DEFAULT keyboard
if(key_capslock = 0) {
if(key_shift)
shift := "+"
if(key_ctrl)
ctrl := "^"
if(key_alt)
alt := "!"
if(dir="down") {
event = {%key% down}
}
else {
event = {%key% up}
}
SendInput, %shift%%ctrl%%alt%%event%
}
Изменить: Обратите внимание, что некоторые клавиши не могут быть обнаружены одновременно, так как (большинство?) Клавиатуры имеют матричную раскладку с горизонтальными и вертикальными проводами. После нажатия клавиши используется 1 горизонтальный и 1 вертикальный провода, таким образом, следующее нажатие / отпускание клавиши, разделяющее любой из этих проводов, не может быть точно обнаружено. По этой причине я не могу использовать S и JKL одновременно, поэтому я использую F для FAAST вместо S для SPEEDY.:/