Xmodmapとのどか(旧窓使いの憂鬱)の設定ファイルを晒してみる

  • HHKが前提だけど日本語キーボードでも一応使えると思う
  • 新たな修飾キーModeSwitchを入れることで、ホームポジション周辺3列にできるだけ全てのキーを詰め込もうとしている
  • SKK使いなので小指の負担を減らすために右手のShiftはホームポジションの小指の位置に。そもそもコロンやセミコロンはそれほど多用するキーではないのに何故ホームポジションにあるのか謎である。
  • Lisperが特に多用する括弧はModeSwitchとの組合せでSとDの位置に割り当てる
  • 数字もModeSwitchとの組合せでテンキーっぽく配列
  • 左利きなのでModeSwitchを右手に割り当てて、左手を動かすようになっている

上の配列を実現するには、 ~/.Xmodmap に次のように書けばいい。

! <注意>
! modifiers のキーリピートを解除しておかないとsynergyとかでおかしなことになる.
!  $ xset -r [keycode]
! で解除できる.

!
! $XFree86: xc/programs/Xserver/hw/xfree86/etc/xmodmap.std,v 3.5 1996/12/23 06:47:28 dawes Exp $
!
! Standard key mapping for XFree86 (for US keyboards).
!
! This file can be fed to xmodmap to restore the default mapping.
!
! $XConsortium: xmodmap.std /main/7 1996/02/21 17:48:55 kaleb $
!
! First, clear the modifiers
!
clear    shift
clear    lock
clear    control
clear    mod1
clear    mod2
clear    mod3
clear    mod4
clear    mod5

!
! Set the mapping for each key
!
keycode   8 =
keycode   9 = grave asciitilde
keycode  10 = 1 exclam
keycode  11 = 2 at
keycode  12 = 3 numbersign
keycode  13 = 4 dollar
keycode  14 = 5 percent
keycode  15 = 6 asciicircum
keycode  16 = 7 ampersand
keycode  17 = 8 asterisk
keycode  18 = 9 parenleft
keycode  19 = 0 parenright
keycode  20 = minus underscore
keycode  21 = equal plus
keycode  22 = BackSpace
keycode  23 = Tab
keycode  24 = q Q 1
keycode  25 = w W 2
keycode  26 = e E 3
keycode  27 = r R 4
keycode  28 = t T 5
keycode  29 = y Y
keycode  30 = u U
keycode  31 = i I semicolon colon
keycode  32 = o O 0
keycode  33 = p P
keycode  34 = minus underscore
keycode  35 = backslash bar
keycode  36 = Return
keycode  37 = Control_L
keycode  38 = a A question
keycode  39 = s S parenleft percent bracketleft
keycode  40 = d D parenright dollar bracketright
keycode  41 = f F bracketleft braceleft
keycode  42 = g G bracketright braceright
keycode  43 = h H exclam exclam
keycode  44 = j J Escape
keycode  45 = k K plus asterisk
keycode  46 = l L ampersand asciicircum
keycode  47 = Shift_R Shift_R dollar
keycode  48 = apostrophe quotedbl
keycode  49 = Escape
keycode  50 = Shift_L
keycode  51 = backslash bar
keycode  52 = z Z 6
keycode  53 = x X 7
keycode  54 = c C 8
keycode  55 = v V 9
keycode  56 = b B equal exclam
keycode  57 = n N slash backslash
keycode  58 = m M minus underscore
keycode  59 = comma less grave asciitilde
keycode  60 = period greater
keycode  61 = Mode_switch
keycode  62 = Alt_R
keycode  63 = KP_Multiply
keycode  64 = Meta_L
keycode  65 = space
keycode  66 = Control_L
keycode  67 = F1
keycode  68 = F2
keycode  69 = F3
keycode  70 = F4
keycode  71 = F5
keycode  72 = F6
keycode  73 = F7
keycode  74 = F8
keycode  75 = F9
keycode  76 = F10
keycode  77 = Num_Lock
keycode  78 = Multi_key
keycode  79 = KP_Home KP_7
keycode  80 = KP_Up KP_8
keycode  81 = KP_Prior KP_9
keycode  82 = KP_Subtract
keycode  83 = KP_Left KP_4
keycode  84 = NoSymbol KP_5
keycode  85 = KP_Right KP_6
keycode  86 = KP_Add
keycode  87 = KP_End KP_1
keycode  88 = KP_Down KP_2
keycode  89 = KP_Next KP_3
keycode  90 = KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal
!keycode  92 = X386Sys_Req
keycode  93 =
keycode  94 =
keycode  95 = F11
keycode  96 = F12
! keycodes 97-107 are not available on 84-key keyboards
keycode  97 = Home
keycode  98 = Up
keycode  99 = Prior
keycode 100 = Num_Lock
keycode 101 = Begin
keycode 102 = Alt_L
keycode 103 = End
keycode 104 = Down
keycode 105 = Next
keycode 106 = Insert
keycode 107 = Delete
keycode 108 = Control_R
keycode 110 = Pause
keycode 111 = Up
keycode 112 = Prior
keycode 113 = Left
keycode 114 = Right
! keycodes 115-117 are only available on some extended keyboards
! (e.g., Microsoft's ergonomic keyboard).
keycode 115 = Meta_L
keycode 116 = Down
keycode 117 = Next
keycode 120 = Control_R
keycode 129 = Meta_R
keycode 131 = Alt_L
keycode 208 = Control_R
!
! Set the modifiers
add     shift   = Shift_L Shift_R
add     lock    = Caps_Lock
add     control = Control_L Control_R
add     mod1    = Alt_L Alt_R
! If you have ServerNumlock set in your XF86Config, you can comment out
!add     mod2    = Numlock
!
!
!
! If you use any of the special default key mappings in Xconfig, they should be
! duplicated in this file.  Mappings should be added before the section above
! which sets the modifiers.
!
!  For the key specs:
!     LeftAlt     =>  keycode  64
!     RightAlt    =>  keycode 113
!     AltGr       =>  keycode 113
!     ScrollLock  =>  keycode  78
!     RightCtl    =>  keycode 109
!     
!  For the mappings:
!     Meta        =>  Alt_L Meta_L
!                     Alt_R Meta_R
!     Compose     =>  Multi_key
!     ModeShift   =>  Mode_switch
!     ModeLock    =>  Mode_switch X386Mode_Lock
!     ScrollLock  =>  Scroll_Lock
!     Control     =>  Control_R
!    
!  If you use ModeShift or ModeLock, the following modifier must be set:
!
add     mod4    = Meta_L Meta_R
add     mod5    = Mode_switch

!
!  For example, to get the equivalent of:
!
!  ScrollLock  ModeLock
!  RightAlt    ModeShift
!  LeftAlt     Meta
!  RightCtl    Compose
!
!  use the following:
!
!keycode  78 = Mode_switch X386Mode_Lock
!keycode 113 = Mode_switch
!keycode  64 = Alt_L Meta_L
!keycode 109 = Multi_key
!
!add    mod5   = Mode_Switch

! When using ServerNumLock in your XF86Config, the following codes/symbols
! are available in place of 79-81, 83-85, 87-91
!keycode  136 = KP_7
!keycode  137 = KP_8
!keycode  138 = KP_9
!keycode  139 = KP_4
!keycode  140 = KP_5
!keycode  141 = KP_6
!keycode  142 = KP_1
keycode  143 = Meta_L
!keycode  144 = KP_3
!keycode  145 = KP_0
!keycode  146 = KP_Decimal
!keycode  147 = Home
!keycode  148 = Up
!keycode  149 = Prior
!keycode  150 = Left
!keycode  151 = Begin
!keycode  152 = Right
!keycode  153 = End
!keycode  154 = Down
!keycode  155 = Next
!keycode  156 = Insert
!keycode  157 = Delete


!マウスの左と右を入れ替える
!pointer = 3 2 1 5 6 7 8 4 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

! for Expert Mouse 7.0
pointer = 3 2 1 5 4 6 7 8 9 10 11 12

のどか(旧窓使いの憂鬱)の場合

Windowsの場合はのどか(旧窓使いの憂鬱)によって同じ配列を実現できる。
104配列を指定した上で、以下の内容のファイルを読み込む

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Nodoka - dotjp.nodoka
# Copyright (C) 1999-2005, TAGA Nayuta <nayuta@users.sourceforge.net>
#
# Modify by applet on 2010-03-29

# まずキーボード定義を読み込む。
if ( USE104 )
  include "104.nodoka"			# 104 キーボード設定
  if ( USE109on104 )
    include "109on104.nodoka"		# 104 キーボードを 109 キーボード風に
  endif
else
  include "109.nodoka"			# 109 キーボード設定
  if ( USE104on109 )
    include "104on109.nodoka"		# 109 キーボードを 104 キーボード風に
  endif
endif

if ( USEdefault )
  include	"default2.nodoka"	# Emacs ライクなさまざまな設定
endif


# Global keymap 設定
keymap Global


# 以下は、便宜上、設定するもの
key C-A-D = &DescribeBindings 		# 現在のキーマップのログ出力
key F1 = &SendPostMessage("PostTray",,"のどか", 0x0205, 0, 0)	# のどかのメニューを開く


# シフト+F2: 日本語キーボード、英語キーボード 切り替えトグル
if ( USE109 )
  if ( USE104on109 )
    key S-F2 => &IconColor(0) &HelpMessage("Reloaded", "日本語 109 キーボード") &LoadSetting("日本語 109 キーボード")
  else
    key S-F2 => &IconColor(2) &HelpMessage("Reloaded", "日本語 109 キーボード (104 風)") &LoadSetting("日本語 109 キーボード (104 風)")
  endif
endif
if ( USE104 )
  if ( USE109on104 )
    key S-F2 => &IconColor(0) &HelpMessage("Reloaded", "英語 104 キーボード") &LoadSetting("英語 104 キーボード")
  else
    key S-F2 => &IconColor(2) &HelpMessage("Reloaded", "英語 104 キーボード (109 風)") &LoadSetting("英語 104 キーボード (109 風)")
  endif
endif


# 以下に、ご自身の設定を御書き下さい。


#HHK固有設定
def key LeftDiamond  = 0x7b
def key RightDiamond = 0x79

keymap Global

#以降の設定をIMEの未確定入力時にも適用
key *IC- =

#Slashをモディファイヤキーとする入力
mod mod0 = !Slash
key M0-A = S-Slash   # ?
key M0-S = S-_9      # (
key M0-D = S-_0      # )
key M0-B = Equal        # =
key M0-F = LeftSquareBracket      #[
key M0-S-F = S-LeftSquareBracket  #{
key M0-G = RightSquareBracket     #]
key M0-S-G = S-RightSquareBracket #}
key M0-N = Slash               #/
key M0-S-N = BackSlash         #\
key M0-Comma = GraveAccent     #`
key M0-S-Comma = S-GraveAccent #~

key M0-Q = _1        # 1
key M0-W = _2        # 2
key M0-E = _3        # 3
key M0-R = _4        # 4
key M0-T = _5        # 5
key M0-Z = _6        # 6
key M0-X = _7        # 7
key M0-C = _8        # 8
key M0-V = _9        # 9
key M0-O = _0        # 0

key M0-L = S-_7                          # &
key M0-S-L = S-_6			             # ^
key M0-K = S-Equal                       # +
key M0-S-K = S-_8                        # *
key M0-M = Minus                         # -
key M0-S-M = S-Minus        			 # _
key M0-N = Slash                         # /
key M0-S-N = BackSlash			         # \
key M0-I = Semicolon                        # ;
key M0-S-I = S-Semicolon                    # :
key M0-J = BS
key M0-S-B = S-_1

key LeftSquareBracket = Minus
key S-LeftSquareBracket = S-Minus
key RightSquareBracket = BackSlash
key S-RightSquareBracket = S-BackSlash

# EscapeとGraveAccentの交換
key Esc = GraveAccent
key GraveAccent = Esc

mod shift += !Semicolon
mod alt -= !RightAlt
mod control += !RightAlt