편집하다:

편집하다:

F1마우스 클릭을 매핑 하는 방법을 알고 있습니다 F2( F3각각 왼쪽 클릭, 가운데 클릭, 오른쪽 클릭).

xkbset m   # required, but disable keypad
xmodmap -e "keycode 67 = Pointer_Button1 Pointer_Button1"
xmodmap -e "keycode 68 = Pointer_Button2"
xmodmap -e "keycode 69 = Pointer_Button3"

하지만 이를 위해서는 다음을 xkbset m사용해야 합니다.느린 키모델:

키보드를 누르면 4커서가 왼쪽으로 이동합니다. 이 기능은 필요하지 않으며 위의 매핑만 필요합니다.

이 문제를 해결하려고 노력 중이지만 xdotool누른 키/놓인 키(드래그 앤 드롭의 경우)를 처리하는 방법을 모르겠습니다.

xdotool mousedown 1
xdotool mouseup 1

내가 어떻게 할 수있는아니요이 모드를 사용하거나 모든 키보드 키를 다시 매핑하는 방법은 무엇입니까?

키보드의 숫자와 산술 기호는 어떻습니까?

다른 해결책이 있나요?

Debian(cinnamon) 및 Archlinux(xfce)에 필요한 정보, 가능하다면 비창 관리자 기반 솔루션을 원합니다.

편집하다:

시험을 마친이 솔루션하지만 끌어서 놓을 수는 없습니다 F1.

존재하다 ~/.xbindkeysrc:

"xdotool mousedown 1"
    F1
"xdotool mouseup 1"
    F1 + Release

또는:

"xdotool mousedown 1"
    m:0x10 + c:67
"xdotool mouseup 1"
    m:0x10 + c:67 + Release

그 다음에:

xset -r 67

편집 2

시험을 마친모바일 지식 기반

# actkbd configuration file
<keycode ("67")> :key : :xdotool mousedown 1
<keycode ("67")> :rel : :xdotool mouseup 1

시가는 안돼요 :/

에서 적응여기

답변1

와우!

먼저: 스크립트를 작성하십시오 click.

#!/bin/bash

id=$(
    xinput list |
        awk '/Dell USB Keyboard/{print gensub(/.*id=([0-9]+).*/, "\\1", "1")}'
)
xdotool mousedown $1
while IFS= read -r event; do
    if [[ $event == *release* ]]; then
        xdotool mouseup $1
        exit
    fi
done < <(xinput test $id)

그런 다음 창 관리자에 새 키보드 단축키를 추가하고 이를 F1실행하도록 매핑합니다 /path/to/mouse <1|3>(왼쪽또는마우스 오른쪽 버튼으로 클릭).

바라보다 ;)

이는 xbindkeysWM과 독립적으로 실행될 수 있습니다.

편집하다:

왜 이것이 Archlinux + xfce 4.12에서는 작동하지 않지만 Debian9 + Cinnamon에서는 작동하지 않는지 잘 모르겠습니다.

편집하다:

이 솔루션이 더 잘 작동합니다.

존재하다 .bashrc:

xmodmap -e "keycode 67 = Pointer_Button1 Pointer_Button1"
xmodmap -e "keycode 68 = Pointer_Button2"
xmodmap -e "keycode 69 = Pointer_Button3"

키보드 단축키:

#!/bin/bash

id=$(
    xinput list |
        awk '/Dell USB Keyboard/{print gensub(/.*id=([0-9]+).*/, "\\1", "1")}'
)


(
    while read event; do
        if [[ $event == *release* ]]; then
            xkbset -m
            exit
        fi
    done < <(xinput test $id)
) &
xkbset m

답변2

다음 명령을 사용하여 "마우스 전환" 작업을 수행할 수 있습니다 .xbindkeysrc(첫 번째 편집에는 오타가 있었지만 오타는 아니었습니다 .xbindkeys).

"if [ ! -e /tmp/mouse_token ] ; then touch /tmp/mouse_token ; xdotool mousedown 1 ; else rm -f /tmp/mouse_token ; xdotool mouseup 1 ; fi"
some_key

/tmp/mouse_token마우스 버튼의 상태를 추적하기 위해 빈 파일을 생성합니다 . some_key를 사용할 수 있기 때문에 F1클릭을 하려면 두 번 누르거나 다른 키(예 F4: )를 사용해야 합니다.

참고: 내 시스템에서는 알 수 없는 이유로 F 키 누르기 이벤트가 xbindkeys 바인딩을 트리거하지 않고 릴리스 이벤트만 트리거합니다. 같은 상황이 발생하면 release+F1for 를 사용하세요 some_key.

참고 2: 이는 기본적으로 선택되어 있지 않으므로 xbindkeysrc 파일에 수정자를 설정하지 않은 경우 제거할 수 있습니다 NumLock.m:0x10keystate_numlock = enable

관련 정보