나는 Xorg를 위한 새로운 사용자 정의 키보드 레이아웃을 작성하고 있는데 유니코드에는 존재하지 않는 특정 문자 모양이 하나 있습니다. 그러나 표준 문자와 결합 구별 부호를 사용하면 쉽게 만들 수 있습니다.
v
예를 들어, 아래에 매크로가 포함된 문자를 원하면 시퀀스가 U0073+U0331
내가 원하는 문자를 생성합니다.
내 xkb 레이아웃 정의에서 단일 유니코드 포인트를 지정할 수 있습니다(여기서는 ḏ 및 Ḏ에 altgr+d
바인딩됨 ).altgr+shift+d
key <AC03> { [ d, D, U1E0F, U1E0E ] }; // d with macron below
하지만 단일 키에 대해 '결합된' 유니코드 문자를 지정할 수 없는 것 같습니다.
key <AB04> { [ v, V, U0076+U0331, U0056+U0331 ] }; // v with macron below
이와 같이 시스템 전체 xkb 정의를 만드는 것이 가능합니까?
답변1
편집하다:
아직도 노력중...
테스트 결과 키맵은 각 위치에서 단일 키만 사용하는 것으로 나타났습니다.
그러나 키맵 정의에서 드물거나 전혀 사용되지 않는 키심을 사용하는 경우 해당 키심이 필요한 다양한 유니코드 문자를 출력하도록 하는 전역 Xmodmap이 작동합니다.
키맵에서:
key <AB04> { [ v, V, XF86LaunchA, XF86LaunchB ] };
전역 Xmodmap에서: (아마도 /etc/profile.d에서 로드되었나요?)
keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331
사용되지 않은/특수 용도의 키심이 꽤 많이 있습니다. 저는 LaunchA/B를 예로 선택했습니다.
답변2
반면, 발음 구별 문자 자체를 결합한 유니코드를 특정 키에 첨부한 다음 다른 문자 뒤에 입력할 수 있습니다. 실제로 이것이 유니코드 결합 문자가 작동하는 방식입니다.
X11에는 데드 키가 있으며 데드 키는 다른 방식으로 작동합니다. 먼저 데드 키, 그 다음 기본 문자입니다. 이 있습니다 <dead_belowmacron>
. 이를 일부 키에 연결할 수 있습니다.
그런 다음 해당 로캘에 맞게 Compose 파일을 편집하고(사용자 정의 위치에서 Compose 파일에 정의를 추가하는 방법을 알고 있는 경우) 다음과 같은 줄을 추가해야 합니다.
# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"
사용할 Compose 파일은 /usr/share/X11/locale/compose.dir 파일의 로케일에 의해 정의됩니다(경로는 다를 수 있음).
답변3
2020년 업데이트
이 질문은 2012년에 제기되었으며 최신 답변(이 답변 이전)은 2013년에 나왔습니다. 오랫동안 더 나은 답변은 간단히 xim
에서uim
. 유니코드 및 다국어 입력을 완벽하게 지원하도록 제작된 다소간 드롭인 대체품입니다. 다른 많은 기능 중에서 uim을 U0073+U0331
사용하면 키 누르기 또는 데드 키 콤보의 결과와 같은 다중 코드 포인트 문자를 출력할 수 있습니다 .