키오스크를 설치하려고 합니다. 이 컴퓨터는 터치 스크린이 있으며 정상 작동 중에는 실제 마우스나 키보드가 연결되어 있지 않습니다. 현재 저는 Debian 12를 사용하고 있지만 더 적합한 배포판을 찾아볼 계획입니다. 이것은 아직 확정되지 않았습니다.
키오스크에는 NFC 카드 스캐너와 QR 코드/바코드/MRZ 스캐너 등 두 개의 USB 주변 장치가 있습니다. 운영 체제에서는 USB 키보드처럼 작동합니다. 무언가를 스캔하면 키 입력을 보내고 텍스트 상자/편집기 창/콘솔 창에 포커스가 있는 데이터를 씁니다.
다음 파일을 읽어 프로그래밍 방식으로 이러한 장치의 입력을 읽을 수 있습니다.
/dev/input/by-id/usb-HOUSESMart_PROTOCOL-if01-event-kbd
/dev/input/by-id/usb-Newtologic_NT7730_XXXXXX-event-kbd
그러나 이렇게 해도 키 입력이 UI에 도달하고 텍스트 상자에 포커스가 있을 때 입력되는 것을 방지할 수는 없습니다. 키오스크 애플리케이션에는 대부분의 화면에 텍스트 입력이 없기 때문에 이는 우리에게 큰 문제가 아닙니다. 그러나 사용자가 텍스트 입력 필드에 입력하는 동시에 무언가를 스캔하는 경우(다른 손에 휴대폰을 들고 실수로 NFC 스캐너에 더 가까이 이동하여 스캔하는 경우) 일부 화면에서는 이런 일이 발생합니다. 텍스트 상자에 기록됩니다. 이걸 멈춰야 해.
이 두 "키보드"의 이벤트가 UI에 도달하는 것을 방지하는 방법이 필요하지만 이러한 입력 파일을 읽어 데이터를 계속 얻을 수 있도록 완전히 비활성화하지 않는 방법이 필요합니다. 이를 수행할 수 있는 방법이 있습니까?
솔루션은 응용 프로그램이 시작될 때마다 실행되는 일부 코드(C#에서 수행할 수 있는 작업이 바람직함)이거나 컴퓨터 설정 중에 한 번 실행되는 시스템 설정일 수 있습니다. 누구라도 그럴 것이다.
또한 이 두 개의 키보드만 제한해야 합니다. 가상이든 물리적이든 키보드가 사용되는 상황이 있기 때문에 모든 키보드를 포괄적으로 제한하고 싶지 않습니다. 장치 ID는 몇 번이나 연결하고 분리해도 변경되지 않는 것 같으므로 이 ID를 사용하여 장치를 식별할 수 있습니다.
완전성을 기하기 위해 키오스크 애플리케이션은 Chrome과 같은 브라우저에서 액세스할 가능성이 가장 높은 .NET8 Blazor 웹 애플리케이션입니다. 또는 .NET MAUI 컨테이너에서 호스팅할 수 있습니다(Linux에서 지원하는 경우). 요점은 특정 응용 프로그램이 될 것이고 어느 응용 프로그램인지 제어할 수 있다는 것입니다. 따라서 "이 키보드에서 이 응용 프로그램으로 키 입력을 보내지 마세요"라고 말할 수 있는 방법이 있다면 그렇게 할 수도 있습니다.