티스토리

구차니의 잡동사니 모음
검색하기

블로그 홈

구차니의 잡동사니 모음

minimonk.net/m

나란히 동등하게 함께

구독자
7
방명록 방문하기
공지 블로그 주인장 장가갑니다 모두보기

주요 글 목록

  • uinput touch 장치 흉내내기 실제 장치에서 터치 한번 하는걸 흉내냈는데 안되서, 프로토콜 대로 구현하니 된다. linux 5.10.72 이긴 한데 그거 영향인진 모르겠지만 Protocol A 로 구현하니 커서나 클릭도 안되는 것 같고 Protocol B를 따라 구현하니 된다. 3.4. Protocol Example B Here is what a minimal event sequence for a two-contact touch would look like for a type B device: ABS_MT_SLOT 0 ABS_MT_TRACKING_ID 45 ABS_MT_POSITION_X x[0] ABS_MT_POSITION_Y y[0] ABS_MT_SLOT 1 ABS_MT_TRACKING_ID 46 ABS_MT_POSITION_X .. 공감수 0 댓글수 0 2024. 3. 13.
  • touchscreen 장치 프로토콜 분석 대충 봐선(?) protocol A에 ABS_X, ABS_Y를 추가한 변종(?) 같긴한데 아래는 한번 터치해서 클릭하는 내용 BTN_TOUCH로 눌렸다 떼었다 라는 걸 보내주는데 깔끔(?) 하게 원격으로 좌표 + 떼어라 만 보내도 되는지 테스트 해봐야 할 듯 (눌렀다 없이 떼었다가 될지 모르겠음) 그 와중에 ABS_MT_TRACKING_ID는 왜 음수 값이 나오지? 세번의 터치가 있었는데(터치 1회, 드래그, 줌 인) 그 때 마다 ABS_MT_TRACKING_ID가 증가하고 매번 -1 로 BTN_TOUCH 0 을 누르기 전에 트래킹이 사용되지 않는다는걸 알려주는건가..? 마지막의 Tracking_id 2,3은 두 손가락으로 줌 인 한 거라, 각각의 손가락에 대해서 처리하는 듯 A non-negative .. 공감수 0 댓글수 0 2024. 3. 12.
  • uinput 으로 touchscreen을 만들기 아래와 같이 설정하면 BTN_LEFT, BTN_RIGHT 때문에, udev에서 Mouse Touchscreen으로 인식된다. int keys[] = {BTN_LEFT, BTN_RIGHT, BTN_TOUCH}; fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK); //Custom key events init ioctl(fd, UI_SET_EVBIT, EV_KEY); for(int i = 0; i 공감수 0 댓글수 0 2024. 3. 12.
  • uinput을 이용한 절대좌표 입력 기기 만들기 uinput 에서 절대값을 받기 위해서는 마우스가 아니라 터치로 인식을 시켜야 한다. 가장 도움을 받았던 문서가 오히려 함정 카드(?)였는데 1.7.4.2의 내용은 상대좌표를 이용하는 일반적인 마우스의 예라서 [링크 : https://www.kernel.org/doc/html/v4.12/input/uinput.html] struct uinput_setup 구조체를 이용하고 있지만 struct uinput_setup { struct input_id id; char name[UINPUT_MAX_NAME_SIZE]; __u32 ff_effects_max; }; [링크 : https://github.com/torvalds/linux/blob/master/include/uapi/linux/uinput.h] 터치패.. 공감수 0 댓글수 8 2022. 8. 11.
  • struct uinput_setup 와 struct uinput_user_dev 왼쪽은 golang의 touchscreen uinput 기능을 이용한 것, 오른쪽은 uinput 예제에서 설정한 것인데 UI_DEV_SETUP 대신 write로 쓰는게 좀.. 특이하다. 그리고 write로 장치 이름을 쓰고 1116 바이트가 써졌다라.. ioctl(3, UI_SET_EVBIT, 0x1) = 0 ioctl(3, UI_SET_KEYBIT, 0x110) = 0 ioctl(3, UI_SET_KEYBIT, 0x111) = 0 ioctl(3, UI_SET_KEYBIT, 0x14a) = 0 ioctl(3, UI_SET_EVBIT, 0x3) = 0 ioctl(3, UI_SET_ABSBIT, 0) = 0 ioctl(3, UI_SET_ABSBIT, 0x1) = 0 write(3, "testpad\0\0\0.. 공감수 0 댓글수 0 2022. 8. 5.
  • uinput 터치 스크린 예제 golang의 예제로는 원하는대로 절대 좌표 이동이 되는데.. C로 하는건 영 안되네 ㅠㅠ 무슨 차이냐!!! [링크 : https://pkg.go.dev/github.com/bendahl/uinput#section-readme] [링크 : https://github.com/torvalds/linux/blob/master/include/uapi/linux/uinput.h] [링크 : https://github.com/bendahl/uinput/blob/master/touchpad.go] 공감수 0 댓글수 0 2022. 8. 5.
  • evbug - 키보드/마우스 입력 디버깅 하기 uinput에 대한 이벤트 로그를 dmesg를 통해 볼 수 있게 해주는 디버그용 모듈 $ sudo modprobe evbug [링크 : https://www.linuxquestions.org/questions/debian-26/how-to-disable-the-evbug-module-478529/] [링크 : https://copyprogramming.com/howto/simulating-absolute-mouse-movements-in-linux-using-uinput] 공감수 0 댓글수 0 2022. 8. 5.
  • uinput 장치 확인 /sys/devices 하위의 장치가 /sys/class/input 에 심볼릭 링크로 걸리는데 uinput을 통한 가상 장치는 /sys/devices/virtual/input에 잡힌다. $ ls /sys/class/input/ $ ls /sys/devices/virtual/input/ [링크 : https://stackoverflow.com/questions/15623442/] 가상으로 잡힌 장치를 보는데 이게 키보드냐.. 마우스냐. abs, rel도 값을 보는법을 찾아야 할 듯.. (abs 모드로 초기화 하면 capabilities/abs가 3으로 capabilities/rel 이 0으로 뜬다.) # cat /sys/class/input/input33/uevent PRODUCT=3/1234/5678/0.. 공감수 0 댓글수 0 2022. 3. 4.
  • uinput absolute mouse [링크 : https://www.kernel.org/doc/Documentation/input/event-codes.txt] [링크 : https://stackoverflow.com/questions/5190921/simulating-absolute-mouse-movements-in-linux-using-uinput] + 2022.02.25 // uinput.h #define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int) #define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int) #define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int) #define UI_SET_ABSBIT _IOW(.. 공감수 0 댓글수 0 2022. 2. 23.
  • xmodmap 키코드 확인하는 명령어 여전..히 키코드와 키입력은 헷갈리네 $ xmodmap -pke keycode 8 = Mode_switch NoSymbol Mode_switch keycode 9 = Escape NoSymbol Escape keycode 10 = 1 exclam 1 exclam keycode 11 = 2 at 2 at keycode 12 = 3 numbersign 3 numbersign keycode 13 = 4 dollar 4 dollar keycode 14 = 5 percent 5 percent keycode 15 = 6 asciicircum 6 asciicircum keycode 16 = 7 ampersand 7 ampersand keycode 17 = 8 asterisk 8 asterisk.. 공감수 0 댓글수 0 2022. 2. 21.
  • uinput 잘 되려나.. 라즈베리에서 해당 디바이스가 root:root 라서 server를 root 권한으로 돌려야 한다. $ ls -al /dev/uinput crw------- 1 root root 10, 223 Jan 27 11:33 /dev/uinput [링크 : https://01.org/linuxgraphics/gfx-docs/drm/input/uinput.html] [링크 : https://github.com/nmelihsensoy/virtual-hid-tcp] /usr/include/linux/input-event-codes.h 에서 KEY_로 시작하는 선언들 발견 + 2022.02.23 [링크 : https://www.freedesktop.org/software/libevdev/doc/latest/] 공감수 0 댓글수 0 2022. 2. 21.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.