하나의 키가 두 개의 유니 코드 코드 포인트를 생성하는 사용자 정의 xkb 레이아웃


14

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 정의를 작성할 수 있습니까?

답변:


11

편집하다:

아직 시도 중 ...

테스트 결과, 키맵은 각 위치에서 단일 키만 사용합니다.

그러나 키맵 정의에서 거의 사용하지 않은 키 심을 사용하는 경우 전역 Xmodmap을 사용하여 THAT 키 심이 필요한 다양한 유니 코드 문자를 출력하도록 할 수 있습니다.

키맵에서 :

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

글로벌 Xmodmap에서 : (아마도 /etc/profile.d?에서로드 되었습니까?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

미사용 / 특수 사용 키 심이 상당히 많기 때문에 LaunchA / B를 예로 선택했습니다.


답변 해주셔서 감사합니다. 한 가지 단점은 이것이 사용 환경 설정이라는 것입니다. xkb를 사용하면 시스템 전체에서 단일 파일로 배포 할 수 있습니다. 물론 그 조건은 제 원래의 질문이었습니다!
SigueSigueBen

2
소스 코드를 파헤 쳤지 만 키 맵의 키 정의에 여러 키 입력을 포함시키는 것에 대한 지원이없는 것 같습니다. 물론, 당신은 그 능력을 구현하기 위해 직접 그것을 쓸 수 있습니다!
lornix

내가 원했던 대답은 아니지만 그 대답입니다. 소스 코드를 직접 살펴보고 제안한 옵션을 살펴 보겠습니다. 감사.
SigueSigueBen

4

반면, 주어진 키에 diactityics 문자 자체를 결합한 유니 코드를 첨부 한 다음 다른 문자 다음에 입력 할 수 있습니다. 실제로 유니 코드를 결합하는 유니 코드가 작동하는 방식입니다.

X11에는 데드 키가 있으며 데드 키는 다른 방식으로 작동합니다. 먼저 데드 키와 기본 문자입니다. 가 있으며 <dead_belowmacron>일부 키에 연결할 수 있습니다.

그런 다음 로케일에 대한 작성 파일을 편집해야합니다 (누군가가 정의한 사용자 정의 위치에서 작성 파일에 정의를 추가하는 방법을 알고있는 경우).

# 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̱"

사용할 작성 파일은 /usr/share/X11/locale/compose.dir 파일에서 로케일로 정의됩니다 (경로가 다를 수 있음).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.