NUMLOCKすると矢印キーが無効になってしまう

[OS]UNIX(SUN)
[リリース]
[キーワード]XRESOURCE TENKEY NUMLOCK

[質問]

テンキーで数値を入力できますが、NUMLOCKすると矢印キーが無効になってしまいます。

[回答]

  1. SASの中で、テンキーを数値入力に使用するためには、SASのXリソースファイルのSAS.KeyboardTranslations部分を修正します。
    ただし、NUMLOCKの状態ではCURSOR CONTROL KEYSが正常に働かなくなりますので、Xサーバーレベルのキー定義をXMODMAPコマンドで変更する必要があります。 以下の手順で変更してください。
           xmodmap -e 'keycode 31=F30'  <--   Left  キー
           xmodmap -e 'keycode 35=F32'  <--   Right キー
           xmodmap -e 'keycode 27=F28'  <--   Up    キー
           xmodmap -e 'keycode 73=F19'  <--   DEL   キー
           xmodmap -e 'keycode 120=2'   <--キーパッドの2 キー
           xmodmap -e 'keycode 98=4'    <--キーパッドの4 キー
           xmodmap -e 'keycode 100=6'   <--キーパッドの6 キー
           xmodmap -e 'keycode 76=8'    <--キーパッドの8 キー
           

    注意:

    • KEYCODEは(34,31,..) "xmodmap -pk"コマンドで調べてください。
    • 環境により異なることがあります。
    • KEYSYM NAME(F34,F30 ..)も環境により異なる場合があります。
    • 上記の設定は一つの例として参考にしてください。
    • 詳細は、xmodmapのマニュアル及び、実行結果を参考にしてください。

  2. 起動するSASが参照するリソース(/usr/openwin/lib/app-defaults/SAS 等)の SAS.KeyboardTranslations 部分を以下のように修正してください。
           SAS.keyboardTranslations: #override \
           Ctrl<Key>space:           sas-begin-conversion()\n\
           Ctrl<Key>Henkan_Mode:     sas-begin-conversion()\n\
           <Key>F34:             sas-cursor-down()\n\
           <Key>F30:             sas-cursor-left()\n\
           <Key>F32:             sas-cursor-right()\n\
           <Key>F28:             sas-cursor-up()\n\
           <Key>F19:             sas-delete-char()\n
           
    以上により、NUM Lock 時にも矢印キーが使用できるようになります。

    注意:

    • xmodmap の変更は他のアプリケーションにも影響しますので、SAS使用時だけ変更するようなスクリプトを作成してください。
    • F19 はFIND キーに割り当てられておりますが、それを代用しております。
      都合が悪い場合には、他の未使用のFunction キーを使用してください。