HP 노트북 기능 키는 Arch Linux의 절전 모드에서 깨어난 후 동작을 변경합니다.

HP 노트북 기능 키는 Arch Linux의 절전 모드에서 깨어난 후 동작을 변경합니다.

HP 노트북에 Arch Linux 시스템을 설정하고 있는데 키보드가 이상한 방식으로 배치되어 있으므로(더 작거나 큰 키로 표시된 키는 스캔 코드 105를 전송하며 이는 올바른 컨트롤 X로 해석됨) 설정을 시도해야 합니다. 내 키보드 구성. 문제는 어떤 키가 어떤 스캔 코드를 보내는지 확인하기 위해 xev를 사용할 때 기능 키에 이상한 점을 발견했다는 것입니다. 정확성을 위해 나는 프랑스어 AZERTY 레이아웃을 사용하고 있으며 내가 보고하는 동작은 내가 로드하는 모든 프랑스어 레이아웃 setxkbmap(예: fr레이아웃, 모델 evdev및 AZERTY 로 시작하는 모든 레이아웃 hp)에서 발생합니다.

  • 첫째, F1의 행동은 정말 일관성이 없습니다. 시스템을 부팅하고 로그인한 후 수정자를 적용하지 않고 F1 키를 누르면 일반적으로 도움을 주기 위해 매핑되는 스캔 코드 146이 전송됩니다. 그러나 더 아래로 내려가면 자체적으로 누르면 더 이상 이 작업을 수행하지 않고 대신 스캔 코드 133(Super_L에 매핑됨) 및 67(F1에 매핑됨)을 지속적으로 전송하며 이것이 트리거되는 것이 무엇인지 알 수 없습니다. 변화. 다시 시작하면 항상 예상된 동작으로 키가 복원됩니다.

  • 둘째, F4 키는 거의 동일한 방식으로 작동합니다. 재부팅 후 단독으로 누르면 164(XF86Favorites)를 보내지만 어느 시점에서는 133(Super_L) 및 33(p)을 보내는 것으로 변경됩니다. 이 변경은 F1 키의 동작 변경과 동시에 발생하는 것으로 보입니다. ~에 따르면이것페이지, HP 노트북에서 F4 키는 노트북 디스플레이와 외부 모니터 사이를 전환하는 데 사용됩니다.

  • 마지막으로 이상한 점은 일반적으로 수정자 키와 기능 키를 빠르게 연속해서 누르면 각 기능 키와 각 수정자를 체계적으로 시도할 때 전송될 것으로 예상하지 못한 일부 스캔 코드가 전송된다는 것입니다(예: XF86Sleep). 캐릭터 실행시 스캔코드가 나오지 않아서 무슨 뜻인지 모르겠네요... 이런 현상은 가끔씩만 발생하며 재현 조건이 무엇인지 잘 모르겠어서 재현이 어렵습니다.

무슨 일인지 아는 사람 있나요? 저는 Linuxland를 처음 접했고 X가 키보드 구성을 어떻게 하는지 이해하려고 노력했지만 여전히 혼란스럽습니다. 따라서 제가 잘못 이해하고 있거나 어리석은 짓을 하고 있다면 알려주세요. 또한 어떤 종류의 정보가 도움이 될지 모르므로 이 문제를 해결하는 데 도움이 되는 추가 정보가 필요하면 알려주시기 바랍니다.

그건 그렇고, Fn 키도 눌렀다 떼면 다음에 기능 키를 누를 때 Fn 키를 누르고 있는 것과 같다는 점에서 데드 키처럼 보입니다. 이게 좀 짜증나는 부분이 있는데 fn키는 OS가 아닌 키보드에서 직접 처리한다고 해서 어떻게 할 수 있을지 모르겠네요.

편집 1:그래서 이 질문을 올린 직후 계속해서 키보드를 만지작거리며 생각했습니다.무엇몇 가지 단서를 제공하지만 답변은 많지 않습니다. F1과 F4가 행동을 바꾸는 원인은 X가 잠자기 상태가 되기 때문입니다. 다시 시작한 후 랩톱을 닫거나 F5(X에 절전 모드로 전환하라는 신호를 보냅니다)를 눌러 X를 절전 모드로 전환합니다. 이전에는 F1과 F4가 예상대로 수행했지만 깨어나서 엉망이 되었습니다. 실제로 F5 키도 이로 인해 변경되었습니다. xev에 따르면 깨어난 후 자체적으로 눌러도 스캔 코드가 연마되지 않기 때문입니다. 이는 또한 내가 인식하지 못하는 키코드가 가끔 표시되는 이유도 설명합니다.

하지만 이제 이것을 알았으니 F 키에 다른 이상한 점도 발견했습니다. xev에 따르면 변경 전후에 해당 키를 눌렀을 때 영향을 받는 모든 키의 동작에 대한 요약은 다음과 같습니다.

  • F1: 이전 = 146(도움말). 이후 = 133 + 67(Super_L + F1).
  • F4: 이전 = 164(XF86 즐겨찾기). 이후 = 133 + 33(Super_L + p).
  • F5: 이전 = 150(XF86Sleep). 이후 = 아무것도
  • F11: 이전 = 136 + 171(취소 + XF86AudioNext). 이후 = 171(XF86AudioNext).
  • F12: 이전 = 255 + 171(XF86RFKill + XF86AudioNext) 또는 171 + 255(XF86AudioNext + XF86RFKill), 식별할 수 있는 패턴이 없습니다. 매번 = 255 (XF86RFKill) 이후.

그래서 자고 일어나서 망가지는 사람도 있고, 일어나자마자 망하는 사람도 있고, 자고 나서 해결한 사람도 있고... 혼란스럽습니다.

관련 정보