macのノートのjisキーボードでxquartzにおいてもusレイアウトの打鍵にする

筆者のmacのノートの(macbook pro 2017)のキーボードのキーは日本語配列になっている.
 
xquartz内のキーボード入力は,xkbで制御するが,layoutをusに一括変換してくれる方法はみつからなかった.xmodmapを用いて元のレイアウトからusレイアウトになるようにした.
 
 
1. xquartz外では,lacailleでusレイアウトの打鍵を実現している.しかし,xquartz内では,lacailleが起動していると,xkbの制御が乱される.lacailleが起動していないと,jisレイアウト
のxkbの制御がうまく動作する.
 
2. xmodmap -pke > .xmodmaprc_for_usとして,このファイルでxkbのキー設定を変えていく.
また,その前に,xmodmap -pke > .xmodmaprc_asisとして,元のxkbのキー設定を保存しておく.
現在の両者の違いは,
bash-3.2$ diff .xmodmaprc_for_us .xmodmaprc_asis 
20c20
< keycode  27 = 2 at trademark EuroSign
---
> keycode  27 = 2 quotedbl trademark EuroSign
23c23
< keycode  30 = 6 asciicircum section UFB02
---
> keycode  30 = 6 ampersand section UFB02
25,31c25,31
< keycode  32 = equal plus notequal plusminus
< keycode  33 = 9 parenleft ordfeminine periodcentered
< keycode  34 = 7 ampersand paragraph doubledagger
< keycode  35 = minus underscore endash emdash
< keycode  36 = 8 asterisk enfilledcircbullet degree
< keycode  37 = 0 parenright masculine singlelowquotemark
< keycode  38 = bracketright braceright leftsinglequotemark rightsinglequotemark
---
> keycode  32 = asciicircum asciitilde notequal plusminus
> keycode  33 = 9 parenright ordfeminine periodcentered
> keycode  34 = 7 apostrophe paragraph doubledagger
> keycode  35 = minus equal endash emdash
> keycode  36 = 8 parenleft enfilledcircbullet degree
> keycode  37 = 0 NoSymbol masculine singlelowquotemark
> keycode  38 = bracketleft braceleft leftsinglequotemark rightsinglequotemark
34c34
< keycode  41 = bracketleft braceleft leftdoublequotemark rightdoublequotemark
---
> keycode  41 = at grave leftdoublequotemark rightdoublequotemark
40c40
< keycode  47 = apostrophe quotedbl ae AE
---
> keycode  47 = colon asterisk ae AE
42,43c42,43
< keycode  49 = semicolon colon ellipsis Uacute
< keycode  50 = backslash bar guillemotleft guillemotright
---
> keycode  49 = semicolon plus ellipsis Uacute
> keycode  50 = bracketright braceright guillemotleft guillemotright
94c94
< keycode 101 = grave asciitilde backslash bar
---
> keycode 101 = yen bar backslash bar
 
3. 出来た.xmodmaprc_for_usを読み込む
xmodmap ~/.xmodmaprc_for_us
 
<2022/9/7 追記 catalinaでクリーンインストールする羽目になり、.xomdmap_for_usのコピーを取るのを忘れており、上記の.xomdmap_asisを手作業で修正した。今後のためにパッチを当てれるようにしておく。
diff -u .xmodmaprc_asis .xmodmaprc_for_us > xmodus.patch
cat xmodus.patch
--- .xmodmaprc_asis 2022-09-07 19:01:56.000000000 +0900
+++ .xmodmaprc_for_us 2022-09-07 19:11:21.000000000 +0900
@@ -17,30 +17,30 @@
 keycode  24 = y Y yen Aacute
 keycode  25 = t T dagger caron
 keycode  26 = 1 exclam exclamdown U2044
-keycode  27 = 2 quotedbl trademark EuroSign
+keycode  27 = 2 at trademark EuroSign
 keycode  28 = 3 numbersign sterling U2039
 keycode  29 = 4 dollar cent U203A
-keycode  30 = 6 ampersand section UFB02
+keycode  30 = 6 asciicircum section UFB02
 keycode  31 = 5 percent infinity UFB01
-keycode  32 = asciicircum asciitilde notequal plusminus
-keycode  33 = 9 parenright ordfeminine periodcentered
-keycode  34 = 7 apostrophe paragraph doubledagger
-keycode  35 = minus equal endash emdash
-keycode  36 = 8 parenleft enfilledcircbullet degree
-keycode  37 = 0 NoSymbol masculine singlelowquotemark
-keycode  38 = bracketleft braceleft leftsinglequotemark rightsinglequotemark
+keycode  32 = equal plus notequal plusminus
+keycode  33 = 9 parenleft ordfeminine periodcentered
+keycode  34 = 7 ampersand paragraph doubledagger
+keycode  35 = minus underscore endash emdash
+keycode  36 = 8 asterisk enfilledcircbullet degree
+keycode  37 = 0 parenright masculine singlelowquotemark
+keycode  38 = bracketright braceright leftsinglequotemark rightsinglequotemark
 keycode  39 = o O oslash Oslash
 keycode  40 = u U dead_diaeresis diaeresis
-keycode  41 = at grave leftdoublequotemark rightdoublequotemark
+keycode  41 = bracketleft braceleft leftdoublequotemark rightdoublequotemark
 keycode  42 = i I dead_circumflex U02C6
 keycode  43 = p P Greek_pi U220F
 keycode  44 = Return NoSymbol Return
 keycode  45 = l L notsign Ograve
 keycode  46 = j J U2206 Ocircumflex
-keycode  47 = colon asterisk ae AE
+keycode  47 = apostrophe quotedbl ae AE
 keycode  48 = k K U02DA UF8FF
-keycode  49 = semicolon plus ellipsis Uacute
-keycode  50 = bracketright braceright guillemotleft guillemotright
+keycode  49 = semicolon colon ellipsis Uacute
+keycode  50 = backslash bar guillemotleft guillemotright
 keycode  51 = comma less lessthanequal macron
 keycode  52 = slash question division questiondown
 keycode  53 = n N dead_tilde U02DC
@@ -91,7 +91,7 @@
 keycode  98 = F20 NoSymbol F20
 keycode  99 = KP_8 NoSymbol KP_8
 keycode 100 = KP_9 NoSymbol KP_9
-keycode 101 = yen bar backslash bar
+keycode 101 = grave asciitilde backslash bar
 keycode 102 = underscore NoSymbol dead_grave grave
 keycode 103 = comma NoSymbol comma
 keycode 104 = F5 NoSymbol F5
 
これらの行をxmodus_patchとして保存し、
patch -u .xmodmap_asis < xmodus_patch -o .xmodmap_for_usで.xmodmap_for_usが作れる。