🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.xwindow
Article #51

�� �ףɣΣģϣף� ϵͳʹ��ָ��--(17)

#51
From: �����ǡ�����������
Date: Fri, 02 Jan 1998 00:00
852 lines
56543 bytes
�ڣ�����  ������ļ��̺ͻ��� -- ת��

    ���Եļ���ͨ������һЩ "���⹦��" (special function)���ڴ���һ
Щ������ "�ƶ�"(program)��Щ���⹦�ܼ�ʹ����������ض��Ĺ������ʺ�
�㹤���ķ�ʽ�����磬����Զ���һЩ����������Щ�㳣�õ������ֻ�谴
һ������ܹ�����һЩ��ʽ��Ƭ�Ρ�

    �ڣ��У������ƶ��IJ�ֻ�ǹ��ܼ���ѣ�����һ��ļ�ͻ���İ�ťҲ��
���ƶ�����ÿһ��Ӧ�ó�ʽ������ָ���ر�Ĺ��ܸ���̺ͻ���ť������
��֮��ϡ� (������ xedit������Խ��SHIFT ��ͻ�����Ұ�ť��������ǰ
�ƶ�һ������)�� ����ʹ�ã� Toolkit�ij�ʽ������ʹ��������һ������֮Ϊ
����ת�� (translations) ����ʩ��ִ�д��ֶ��壬�Ҵ��ֶ����������
resources �ṹ���ݸ�Ӧ�ó�ʽ�� (��Щ��ʹ�ã� Toolkit��Ӧ�ó�ʽ��ͬ��
��Ҳ��������ͬ����ʩ���ƶ�, �����������Ķ������Բ��ܹ㷺��Ӧ�ã���
���������Ǽ���ÿ�������й�ת������֣���Ϊ����Щʹ�ã� Toolkit��Ӧ
�ó�ʽ���ԡ�)

    ����ͬ���е� resourcesһ��ת���ǵ�Ӧ�ó�ʽִ��ʱ�ű����á�����
�����ӵ������߱���ͬת���趨�� xedit����ͬʱһ��ִ�С�( �������һ
��xedit �ʺϱ༭���ģ���һ���ʺϱ༭��ʽ�룬����һ���ʺϱ༭����)��

    ��������ת�� -- ������ǵĶ����ʽ����ν������趨��Ӧ�ó�ʽ����
������ǹ��ܵġ�Χ������������ʵ�������ܣ��𽥵ص����㿴����ͬ�Ľ�
�ȡ�����Ƚ���ʽ����ϸ������ת�롣���ᣬ�����г�����ʹ��ת��ʱ������
���Ĵ��󣬲�����һЩ��ο˷���Щ�������ʾ��

17.1 ʵ��ʹ��ת��

    Toolkit ת��ṹ��򵥵���;���������ƶ�����̵ļ����磬����ʹ
��xterm Ϊһ��ִ��һ��shell ������Ӵ�ʱ�������ϣ����һЩ���⹦��
���������㳣�õ������ϣ��ָ���Ĺ�ϵ���£�

      ���Ұ��������ʱ...           ��ϣ������ִ�������

          F1                          rm core *.tmp <newline>

����Toolkit �ﵽ��Ŀ�ķ���Ϊ��ָ��һ��ֵ��ʹ��ת���widget�е�resources
����ֵ�趨Ӧ�ó�ʽ�������Ķ��� (customisation)���ұ�Toolkit �� Trans-
lation Manager (ת�������) ���?�� resources������Translation,
�����Ա��Ƽ���һ����translations��

    ����һ�����ǽ������趨��resources �е�ֵ�ĸ�ʽ��

17.1.1 ��ζ�һ��Ӧ�ó�ʽָ��ת��

    ��ǰ��xterm �����ӣ����Ƕ��� (�ڼ�����Ӧ�ó�ʽ�����resource����
���л�һЩresource������) һ��������ƣ�

    xterm*VT100*Translations: (contd.)
    <key>F1: string("rm core *.tmp")            ע�⣺������

    ����Ϊ���κ���� VT100�� xterm widget �У����� F1 ������ʱ������
�ִ� "rm core *.tmp")��

    ���ҵ��ǣ���û������򵥣�ת��������������Ĺ�����Ϊ "ȥ����
���ִ��ת�룬�Ҽ���... " ��������������� " A���Dz���һ�� A" ����
ϵ�� (binding)������ʧ��Ϊ�˿˷���㣬�����ʹ��һЩ����Ϊ directive
(ָ��)���﷨������ resource ֵ֮ǰ��

      xterm*VT100*Translations: #override(contd.)
      <key>F1: string("rm core *.tmp")

    ͨ�����ϣ��ִ󲿷��ִ��ϵ�ᣬ��ֻ�ǰ�����ȷָ����ֵ������ȥ
��������һ�㶼�������ת����У�ָ�� #override��

    ������������Կ�ʼ�����ˣ�������ʼһ�� xterm�ҰѴ˹�� (������
����� (')�м�IJ���) ����ѡ�� -xrm ��������������

    xterm -xrm 'xterm*VT100*Translations: ... �ȵ�'

    �������⹦�ܼ� F1,�㽫����ָ�����ִ��ɹ��IJ��룬����δ��������Ԫ
(newline) ���������һ���﷨�ļ������˷�����

      xterm*VT100*Translations: #override(contd.)
      <key>F1: string("rm core *.tmp")string(0xd)

��������������㣺

  1.  string()�����ú����������ء������ֱ�����뱾�� (���� string(lpq))
      ��������İ�հ׻����ĸ��Ԫ��������ڱ���ǰ�����˫��š�
      ����������� "0X" ��ͷ�����������Ϊʮ���λ����������Ե�

      ASCII ��Ԫ��(���磬0xd��RETURN)

  2.  ����ָ���˹���ʱ�ɽ��һ�����ϵ����ã������������õ� string()
      �������Σ��������֪����������ã�����Ҳһ�����ϵ��������

��������ת����һ��

����Ը��������һ�����ж�������ת�롣���裬������ǰ���ת��������
ϵ�᣺

      ���Ұ��������ʱ...           ��ϣ������ִ�������

          F2                          lpq-Plpa3 <newline>

�Դ˵�ת��Ϊ��

    <Key>F2: string("lpq-Plpa3")string(0xd)

���Կ��Խ����м���ǰ��ı��С�����ת��������ĸ�ʽ����������DZ��轫
����ת���� "\n" �ֿ��Ҷ�����Ϊһ�У�

      xterm*VT100*Translations: #override(contd.)
      <key>F1: string("rm core *.tmp")sting(0xd) \n(cond.)
      <Key>F2: string("lpq-Plpa3")string(0xd)

���ϵ���ʽ����ɹ����ϵ����ѣ�����Խ���� "���ص�������Ԫ" ��ʹ��
�߿ɶ���һЩ�� (������Ԫ�Ե�б�� "\"����)

      xterm*VT100*Translations: #override\n\
      <key>F1: string("rm core *.tmp")sting(0xd)\n\
      <Key>F2: string("lpq-Plpa3")string(0xd)

����Է���������������� "���ص�������Ԫ" , �Ҽ������κεط���ɣ�
����ֻ�DZ����Զ��ѡ� (ֻҪ��ת���������أ�������ÿ��һ�����ֱ�ʹ��
һ��Ҳû��ϵ����ǧ��Ҫ��һ������ resource ���粿��ʹ�����ǣ�����
�޷���resource manager���ͣ�Ҳû����ͬ��Ч��) �����о���Щ����
���õ��ġ��򵥵�˵��resource�ṹ��Ҫ����Ҫ��һ���е�һ��resource���
�� "ֵ" �IJ��ݣ���ת��������Էֿ��������ֿ� (Ҳ������\n�ս�)����ʹ��
�߸պ���ÿһ��ʵ�ʷֿ����д��һ�����������ӿɶ��ԣ����Թ���ܼ򵥣�
�ڳ�������һ�е�ÿһ��ת���о����һ�� "\n\"��

17.1.2 ת���ϵ�������ʽ������

������ xterm����չʾ������ܹ����㰴��һ����ʱ������������ִ�����
ת��ṹ�Ĺ��ܱ����� -- �����ϵ���κ�widget���ṩ�����õ�������
������ϸһ��ؿ�һ����Щ���á�

    ǰ�������ӣ������� xterm�� VT100 widget����˼�F1��F2�� string()
�ϵĶ�Ӧ�����ǽ����� xtermΪ��˵���������á�

    ����xterm ��ָ��ҳ���ڱ���KEY TRANSLATIONS �� KEY/BUTTON BINDINGS
�㽫��������������á����ǽ�����һ��ת���Ӧ��F3��insert-selection()
����֮�ϣ��������ǿ����ü�����ȡ���󣬽���ǰ "��"�µı��� "��"����
ָ��ҳ�������Ǵ�������Ҫһ��������г���Ԥ��ϵ�ᣬ���ǿ��Կ���Ԥ��
�� "����" �ṹΪʹ�� CUT_BUFFER0, �������ǽ�CUT_BUFFER0������������
��resource����ǣ�

      xterm*VT100*Translations: #override\n\
      <key>F3: insert-selection(CUT_BUFFER0)

��ĿǰΪֹ����ֻ��һ��СС�ı���Ȼ��ٶ�˵�㻨�����ʱ���ڱ�����
���Ϲ��������� tbl��ʽ�������� nroff��өĻ��Ԥ�� (preview)���ǣ���
troff �Ű棬�ҽ�����͵����һ���ù����� (filter) Ϊtr2printer��ӡ��
���ϡ��趨ת��Ϊ��

  xterm*VT100*Translations: #override\n\
  <key>F3: string("ed") insert-selection(CUT_BUFFER0)\
  string(0xd)\n\
  <key>F4: string("tbl") insert-selection(CUT_BUFFER0)\
  string("| nroff -man") string(0xd)\n\
  <key>F5: string("tbl") insert-selection(CUT_BUFFER0)\
  string("| troff -man -t | tr2printer") string(0dx)

xterm ��ȷ����Щת������xrdb�����Ͽ����������һ��resource�����У���
���Դ��?���ڵ�����ʼxterm���û��� "��"ȡ������Ĺ����ĵ�����ơ���
��������ɰ�F3��༭��F4��Ԥ����Ͱ�F5����Ӳ�������Ű���

����widget����� -- xbiff

����xbiff ��ָ��ҳ����ACTIONS �ı����£��㽫����Mailbox widget��֧Ԯ
���õ�����ΩһԤ���ת��Ϊ���㰴���κΰ�ťʱ�����ż� (mail)������
(flag)(����unset())�����ǽ��趨ת�������Լ�����������Щ���ã�����Щ��
�ö�Ӧ�� "?" �� "UP" "DOWN"������������£�

       ?    check()    ���µ��ż���?
       UP   set()      �����ż�������
       DOWN unset()    �����ż�������

��������ص�ת��?

    xbiff*Mailbox*Translations: #override\n\
    <Key>?: check()\n\
    <Key>Down: unset()\n\
    <Key>Up: set()

�Դ˲���֮����xrdb�����resource���Ͽ�������Щ�趨��Ȼ������xbiff ��
��ָ���Ƶ��Ӵ��ڡ��ظ��ذ���Up��Down�α���Ƽ�������ͽ����ż���
�ġ�

�ҳ�����Щ���ñ��ṩ

���widget���ý���widget���������ͬ�����⣺����ҳ�ij��widget������
����Щ�����Լ���������Щʲ�᣿ͬ��أ�û��һ�������Ľ�𣬵���һ����
���������?

  1.  �鿴Ӧ�ó�ʽ��ָ��ҳ��������Ӧ�ó�ʽ�������Լ�ר�ŵ������ļ�
      �����磺xbiff ��һ�ڽ���ACTION����xterm �����ڹ��ת������õ�
      �ļ� -- KEY TRANSLATIONS �� KEY/BUTTON BINDING��

  2.  �����ָ��ҳ���ܸ�����ʾ��������ֱ�Ӹ��������õ�����widget����
      ����������Բ鿴���widget set�ļ��е��ض���widget��(�� core
      ����Ωһ��widget setΪAthena���������ڴ˲��׳���)����ʹָ��ҳδ
      ������widget����𣬵����ϵͳ��Ϥ֮�ᣬ�㽫��һ��widget�Ƿ�Ϊ
      ��׼��̬�Ͼ��и������Dz��� ...

  3.  �鿴��ʽ��ԭʼ�룬�����õ�ʲ��widget������Լ�widget�ṩ����
      Щ���á�

17.1.3 ת��ϵ�����õ�һ�����¼�����ֻ�ǵ�һ��

�����Ѿ�����ת�������趨���룬ת��ṹҲ������ϵ����Щ���ã��������
��һ�ļ����һ���еļ��������ʵ��һ�����κεģ��¼���

    �����Ǽ�����xbiff Ϊ������ת��һ���еļ�����Ԫ���������Ƕ�
    ����Ԫ�ִ���ת�����£�

        look   check()
       raise   set()
       lower   unset()

����Ϊ��ص�ת��?

    xbiff*Mailbox*Translation: #override\n\
    <Key>l,<Key>o,<Key>o,<Key>k: check()\n\
    <Key>r,<Key>a,<Key>i,<Key>s,<Key>e: set()
    <Key>l,<Key>o,<Key>w,<Key>e,<Key>r: unset()

�Դ˲���֮ -- �����趨������xbiff ����ָ���Ƶ��Ӵ��ڡ�������ɽ�
������������ִ�������ͽ������ġ�������������Ԫ r, a, i, s, e����
�����ġ���xbiff ���������м���ֵ��˵����

    . �����ƿ����ò�ͬ�ķ�ʽָ�������ӡ����Ԫֱ��ָ�� (��"<Key>w")
      , �������Ԫ��ƴ��ȫ��(��"<Key>Down").��¼�� "�ļ�ָ��" ������
      �ںδ��ɲ鵽�����ƣ����ڱ��������и�򵥵ķ�����

    . ����Ԫ�ִ��������һһָ�������Զ���ֿ�
      (��"<Key>l,<Key>o,<Key>o,<Key>k").

    . ת���������ͬ��ͷ�ļ����� "look" �� "lower" ��ӵ����ͬ�Ŀ�ͷ
      "lo"����ת������������γ����⡣

�ҳ�������

�ҳ�ת������ļ����ƣ���򵥵ķ���Ϊִ��xev ����ָ���Ƶ��Ӵ��ڣ���
��������ļ�������ƻ�������������ִ�keysym��һ��ʮ���λ��֮��
��������xev ���Ӵ��ڰ����α���Ƽ�DOWN����������ͼ17 - 1����������
�ῴ��

    (keysym 0xff54, Down)

Ҳ����˵��������ΪDown��

               ������������������������������������
               ��  P209.  fig 17 - 1             ��
               ��                                ��
               ��                                ��
               ��                                ��
               �� ͼ 17 - 1 xev ��ʾ����Ƶ���� ��
               ������������������������������������

�������ת����ʹ���κ���̬���¼�

��ĿǰΪֹ��������д��ת�붼��ϵ�����õ�һ�����µļ�����Ԫ����������
˵��ת��ṹ��ϵ�����õ��κ��¼�����ֻ춰��¼��̶��ѡ����ܵ��¼�
��̬�dz��Ķ࣬�ڴ�����ֻ�ἰһС���ݣ�

      ��̬               ����

      <Key>          ����һ����
      <KeyDown>      ����һ���� (ֻ����һ�����)
      <KeyUp>        ����һ����
      <BtnDown>      ����һ������ť
      <BtnUp>        ����һ������ť
      <Enter>        ָ������Ӵ���
      <Leave>        ָ���Ƴ��Ӵ���

�����Ѿ�ʹ�ù���һ������¼���������ϵ��xbiff ���õ�����ť��ȡ��֮��

    xbiff*Mailbox*Translations: #override\n\
    <BtnDown>Button1: unset()\n\
    <BtnDown>Button2: check()\n\
    <BtnDown>Button3: set()

����Կ����﷨��ǰ�����ƣ����ȸ�һ���Ե��¼���̬ (���� <Key> ��
<BtnDown>)����������������¼����¼�ϸ�ڲ��� (����s ��Button3) (
Button 1, 2, 3�ֱ��Ӧ�����С��Ұ�ť)

��һ���е��¼���ת��

����ͬ���Ƕ�����һ���а��¼��¼���ת��(set��unset��check)�����ǵ�Ȼ
Ҳ���Զ���һ���еĻ����¼�����ʵ����ת���һ���е��¼��������������
һ���������һ��ת�������������¼�����̬����������Զ������µ�
ת��?

    xbiff*Mailbox*Translations: #override\n\
    <BtnDown>Button1, <Key>?, <BtnDown>Button3: check()\n\
    <BtnDown>Button1: <Key>u, <BtnDown>Button3: unset()\n\
    <BtnDown>Button1: <Key>s, <BtnDown>Button3: set()

Ҳ����˵���õ�check()������������Ȱ��°�ť1 (��ť)��Ȼ�ᰴ��"?"
�� �����ᰴ�°�ť3 (�Ұ�ť)�� ��������Ǻܺã������һЩΣ�ջ�
��ȡ�� (irreversible) ������ (����ɾ��һ�����������Ǹ�дһ���������
����) ��������������ַ�ʽ��ʹ��ת�롣����Ҫʹ��һ���dz�������������
�У������õ������ã�����ʹ��ʹ���߲��������������������

ʹ�÷Ǽ��̺ͷǻ����¼���ת��

ͨ�����Ƕ԰��»���ɻ���ť����̵ļ���ת�롣��������˵�����
�Զ��κ��¼��趨ת�룬����ָ��������Ƴ�һ��widget���Ӵ�����������
xman����ѡ���Ӵ� (ͼ10 - 3) Ϊ����������������һ���൱��Ϊ�ġ���
��Ϊ��û���κ���;����������Σ�������ױ���������Щʲ�������

�鿴xman��ָ��ҳ����X DEFAULTS�����£��㽫����������xman���õ���widget
����ƺ������ѡ�����Ӵ�widget����ƽ�topBox�������ΪCommand����
��һ���õIJ²⣬��Ϊ��ѡ�������еķ��������ǿ��õڣ����������ļ���
��ȷ����ʹ�����µ����

    xman -xrm "*Command*backgroundPixmap: scales"

�����е�Command widget����������״�ı���)��

���������ǰ�ġ�����һ����Ҫ�IJ�ͬ���������õ������ò������ض���Ӧ��
��ʽָ���������ɱ�׼��widget�ṩ (������ΪCommand widget���� "��
Toolkit Athena Widget"ʹ���ֲ���������)��

    �����Ƕ����κζ���֮ǰ��������һ����widgetԤ��Ĺ��ã��Ա�������
���˽���Щʲ���·��������Щwidget�����û���������xman���ƶ�ָ�����
 Help �У���ῴ���е�����ɸ����� -- ����highlight() �����á���ָ
���Ƴ����е����ָ��� -- ����unhighlight() ���á���ָ���ٶ�����
 Help �У�����һ������ť�����ְ�ס���š�����ڵ�ɫ�ʷ�ת (���ڵ���
�ֱ��Ԥ��ı���ɫ����ԭ���Ӵ��ı�������Ӵ���ǰ��ɫ)��-- ����set()
�����á�����ְ�ס����ť����ָ���Ƴ��Ӵ��⣬����ɫ�ʻָ��� --
����reset() �����á�һ���� "����һ��" (clicking on) Help�еĴ���Ϊ��

    1.  �ƶ�ָ�������У�highlight()������Ϊ�����ȡ�

    2.  ���°�ť��set() ��ת���е�ɫ�ʡ�

    3.  �ɿ���ť��notify()��ʼ���ã���ɳ�ʽ���������Ӵ�(help window)
        ���ڽ�����ʱ���е�ɫ�ʱ��ַ��ࡣ���Ӵ��������֮�ᣬreset()��
        ת���ڵ�ɫ��Ϊ�������Ա��ָ����ȡ�

    4. ��ָ���Ƴ��Ӵ���unhighlight()�����ָ���

    �������˽�������Щ���ã����ǽ�����һЩת�����ı�ԭ�Ƚ���Ӵ�����
�ã�

    *Command*translations: #override\n\
    <EnterWindow>: reset()\n\
    <LeaveWindow>: set()

�������ֵ�ת��?����һ��ʼ�ƶ�ָ�������У�ʲ����Ҳ���ᷢ��
�����Ƴ�ָ��ʱ��ɫ�ʻᷴת��������ٶ��ƶ�ָ�������У�ɫ�ʻ�����
������������ú�ǰ����ͬ��

ʹ�����μ��������¼����

��ʱ��ָ����ת��ϣ����ͬʱ����һ�������μ� (modifiers) ��������Ҫϵ
��һ�����õ���META��ͬʱ���µ�һ������ǵ�CTRL��SHIFT ͬʱ���µĻ�
��ť����ĿǰΪֹ���ǻ�û���κΰ취��ָ����ˡ����Dz������¼����д�
����㣬��Ϊ����������ģ���������Ҫ����ָ��ͬʱ������ "����X ����
CTRL��ͬʱ������"��

    ����ת����ָ�����μ���ֻ�����¼����֮ǰ��������������μ���
������xterm �У�����meta-iΪ "��" ��һ�� "��" �ı��ģ�ʹ�ã�

    *VT100*Translations: #override\
    Meta <Key>i: insert-selection(PRIMARY, CUT_BUFFER0)

��Ϊ�������μ��¼���̬�����ʮ�ֳ���ת�����������ʹ��һ����д��
��ʽ����������ڶ��е�д��Ϊ��

    <Meta>i: insert-selection(PRIMARY, CUT_BUFFER0)

    ���ǿ��ԶԻ����¼���ͬ��Ĵ��?�����Ƕ�xedit ����ת�룬ʹ��ʹ��
��������ڱ����Ϸ�����ƶ����������ȵij������£�

    *Text*Translation: #override\
    Shift <Btn1Down>: forward-character()\n\
    Shift <Btn2Down>: forward-word()\n\
    Shift <Btn3Down>: next-line()\n\
    Ctrl <Btn1Down>: backward-character()\n\
    Ctrl <Btn2Down>: backward-word()\n\
    Ctrl <Btn3Down>: previous-line()

������������ֵ�����ᷢ�� -- �α������������ǣ����ұ��ĵ�Ƭ��
��һ���ӱ�ѡ��һ������ȡ��ѡ�񡣷������������ԭ����Text widget ��
Ԥ��ϵ����Ȼ�����ã�����ת����

    <Btn1Up>: extend-end(PRIMARY, CUT_BUFFER0)

�������Ϊ�ⲻ��Ӱ���㣬��Ϊ�����ɿ���ťʱ�����ǰ���SHIFT ���CTRL��
������ʵ�ϻ����ã�ת������������δ��������μ����Ϊ�㲻�ں����ǵ�
Ӱ�죬�����ɿ�Button1 ʱ���Ӧ�������Ĺ��Ϊ�˿˷���㣬���Ƕ���Щ
���ܲ�С�ı�ᷢ��İ�ť�ɿ��¼�����ת�룬��ϵ�ᵽһ���� (null) ����
����Щת�뵱����Ӧ��ʱ��ǵ�Ԥ���ת�롣��ʹ��Text widget ����������
�����У�����һ�������ת��?

    *Text*Translation: #override\
    Shift <Btn1Down>: forward-character()\n\
    Shift <Btn2Down>: forward-word()\n\
    Shift <Btn3Down>: next-line()\n\
    Ctrl <Btn1Down>: backward-character()\n\
    Ctrl <Btn2Down>: backward-word()\n\
    Ctrl <Btn3Down>: previous-line()\n\
    Shift <BtnUp>: do-nothing()\n\
    Ctrl <BtnUp>: do-nothing()

����������м��㣺

    �����ǶԻ����¼�ʹ������д���﷨��Ҳ������ǰ���﷨��<BtnDown>Button1
      ��<Btn1Down>ȡ��ת�����������һЩ��д���﷨���ڡ� (������ǰ
      �濴���� <Meta> Ҳ��һ��)��

    �������� do-nothing() ����һ���� (dummy)���ã��ͺ�����������Text
      widget���ļ���һ�㡣��ʵ����������Dz����ڵģ���˻ᵼ�´����
      ѶϢ���֣�����Ϊ���DZ�������Ҫ������ʲ����Ҳ�����ģ����������
      �⡣

    ��������Ƿ���ָ���������ã���������һ���¼� <BtnUp>���������
      ��ť����ͬ�أ�ת��������Ѵ�ȱ�����ι��Ľ���Ϊ "���κ�"����һ
      ���¼���ȱ��ϸ�ڲ��� (�����ڹ��"<BtnUp>Button1"��"Button1"�IJ�
      ��) ����Ϊ "���κ����е�ϸ�ڲ���"��

      �����ת������һ���dz����õ���ʽΪ��

          <Key>: ...

      ��Ϊȱ��ϸ�ڲ��ݣ����Կɱ�������а��¼� (key-press)�¼���Ҳ��
      �Ƕ����еļ���ʵ����Text widget ����һ��Ԥ���ת��Ϊ��

          <Key>: insert-char()

      insert-char()���õĹ���Ϊ��һ������ʱ���������Ӧ��ASCII��
      Ԫ��

17.1.4 ���ϵ�ת��?����

��ĿǰΪֹ�����ǰ����е�ת���Ӧ��������widget��𡣵����ܶԸ����
widgetָ��ת�룬����ͬresourceһ�㡣�ڴ����ǽ���xman�������ת�롣
���ǽ���Help��widget (��Ӧ���õ�����(mnemonic)��Ԫ)ֻ�õ������¼�����
Quit��ֻ�õ��Ӵ��¼���Ϊ�˴ﵽ�˵㣬���ǽ���ת��Ӧ�õ���widget ������
ȷ����ơ����ǵ�ת������£�

    *Help*translations: \
    <Key>h: highlight()\n\
    <Key>u: unhighlight()\n\
    <Key>n: notify()\n\
    <Key>s: set()\n\
    <Key>r: reset()\n\
    <Key>LineFeed: set() notify()

    Quit*translations: #override\n\
    <EnterWindow>: reset()\n\
    <LeaveWindaw>: set()

�м����ر���﷨��Ҫע�⣺

    ���ڴ����Ƕ���ͬ����в�ͬ��widgetָ����ͬ��ת�룬����������Ҫ֪
      ����Ա (instance) ��ơ����ҵ��ǣ���Щ��Ա��� (Help��Quit��
      Manual Page)�������ԡ�����������ļ����Ҳ��� (�����Ҳ���)����
      ��ֻ���òµĻ���ȥ�鿴ԭʼ��ʽ�ˡ�

    �����Help������ʡ���˳��õ�#override����Ϊ���ǶԴ�widget����Ҫ��
      ���κ�Ԥ���ϵ�ᡣ�ر���ǣ���ָ������Ӵ�ʱ�����Dz�Ҫ��widget
      ���ָ����ȣ�������Dz��ܿ������ת���Ч�á�

    �����ʡ�� #override�����ǽ����ת����������һ�С�(���������
      �����ҶԵ�һ������\n\ ���������ǽ��õ�����

          X Toolkit Warning: translation table syntax er-
          ror: Missing ':' after event sequence.
          X Toolkit Warning: ... found while parsing ''

      ��Ϊ\n���������ת����������� #override ָ���)������к�
      ��һ����������ص�������Ԫ���������ͬ��

          *Help*translations: \
          <Key>h: highlight()\n\
          ...

    ����LineFeed��һ�е�ת�룬���˸��ϵ����ã���ǰ��xterm �и��ϵ�
      string()�������ơ�

    �����Ѵ��º����������õ�ת�롣��ĸ���ܼ򵥣�������ǵĽṹ
Ҳ�����ӣ������Ƿdz��������Ի�ԭ��������һ����չ�е���ͳ��������
�汾����ļ������Ǻܶࡣ��һ���ظ����������ģ����ھ������������ܹ�
���һ�����ǽ���ת��Ĺ������Ƚ���ʽ��������

17.2 ת�� -- ��ʽ�͹���

ת����һ����Toolkit �ṩ��һ���Խṹ������ʹ����ָ����ijЩ�ض����¼�
��widget���յ�ʱ��һ��widgetӦ��ɺ������á�Toolkit �д���ת��IJ���
����֮Ϊת���������

    ת����widgetָ�������ȷ��һ��widget��ÿһ����Ա��һ��ת��ļ���
��֮Ϊһ��ת��?�����������׼��resource�ṹ���ݸ�Ӧ�ó�ʽ��widget
 (��ת�������ζ�) ����һ��Translation ����resource���ԣ�ͨ����
��Ա���Ϊtranslation�����ת��resource�ڴ��һ��ֵ��Ϊһ��ת��?��
�����������resourceһ�㣬�������ͬһ��Ӧ�ó�ʽ�Բ�ͬ��widgetָ����ͬ
��resource�����������������ƻ��Ա��ƻ���߻����ָ�����ǡ�

    ÿһ��widget�����������ṩ�����ã�����������������̬�ϣ����Ƕ���
�����仯�ġ�

    ת��ɱ����ֲ�ͬ��̬���¼�ָ��������ֻ춼��̺ͻ����¼����ѡ��κ�
���е��¼����ܱ����?����ͬ��һ�¼�һ�㡣

    ת���ת����� " X Toolkit Intrinsics " ʹ���ֲḽ¼��һ���У���
�������������dz�ѧ�߲鿴ת��ĺõط���������������¼���̬����
����Ƶȵȵı��У��ڴ˲���׸����

17.2.1 ת���ĸ�ʽ

һ��ת�������ϵĸ�ʽ���£�

    [optional-directive\n] list-of-translations

ÿһ�� list-of-translations ��һ����ת����ɣ���ʽ���£�

    event-sequence : list-of-actions


��event-sequence����ʱ������е�list-of-actions ����widget����ɡ���
����һ�����У��ж��һ����ת�룬ÿһ������ "\n" �������

    ������������һ��ѡ���ָ�Ȼ�ῴһ��list-of-translations��ϸ��
���ݡ�

17.2.2 ת��ָ�� -- #override �ȵ�

ѡ��ָ�� (directive) ����ת�����������Ӧ���κ����趨֮���widget�ڴ�
ת�뼯����Ӧ��δ��?

    #replace : ��������ִ�Ķ�Ӧ��ֻ������ת��������еġ�(ֻʹ����
        ��)��

    #override : ǿ���������еĶ�Ӧ������ת����С�����ڱ������κ���
        Ŀ�趨�����еļ�����д��Ҳ����˵�����еı����е�ȡ�� (���
        ���еĺ��µģ����µıȽ���Ҫ)��

    #augment : ǿ���������еĶ�Ӧ������ת����С�����ڱ������κ���
        Ŀ�趨�����е��趨���ڣ�ʹ�þɵĶ�����µġ� (��Ͼ��еĺ��µ�
        �����ɵıȽ���Ҫ)��

���δ�趨ָ��Ԥ��Ϊ #replace ��

17.2.3 �����ת�����ʽ

ÿһ��ת��ĸ�ʽΪ��

    event-sequence : list-of-actions

����������һ���˹����������ݡ�

�¼����¼�����(event-sequence)�ĸ�ʽ

һ���¼����а�һ�����¼����(event-specs), ���ʽΪ��

    [modifiers] <event-type> [repeat-count] [detail]

�����¼���̬(event type)�⣬��Ϊ��ѡ��(<>��Ϊ����)��

    modifiers : ���ǻ�����бȽϾ��ɵIJ��ݣ���������һ��˵����

    event-type : ָ����������Ȥ���¼�����̬�����簴��(<KeyDown>)��
        �ɿ���ť(<BtnUp>)��ָ���뿪�Ӵ�(<Leave>)�ȵȡ�

    detail : ָ����������Ȥ���ض���̬�������ʡ��ϸ����(detail field
        )���¼���񽫶�Ӧ���κ�detail����ˣ�<Key>����Ӧ�����еİ���
        �¼����˸�ʽָ����ÿһ���¼���̬����ָ���¼���̬��ϸ����Ϊ��

        ����<Key>��<KeyUp>��<KeyDown>�¼���ϸ������Ǽ�����(����
          "<Key>s")������ keysym (keysym�ǰ����Կ�ͷΪ"0x"��ʮ���λ
          ���ʾ�������һ����ϸ����)��

        ����춰�ť�¼���ϸ�ھ��ǰ�ť����ƣ�Ҳ���� Button1 ... Button5
          �е�һ��������������ǰʹ�ù��"<BtnDown>Button1"��

    ��̬/ϸ�ڵ���д�������ת���������һЩ�¼���̬��ϸ�ڵ���ϣ�����
        �������ʹ����д��

          ��д               ��ȵ�ȫ��

          <Btn1Down>         <BtnDown>Button1
          ...
          <Btn5Down>         <BtnDown>Button5
          <Btn1Up>           <BtnUp>Button1
          ...
          <Btn5Up>           <BtnUp>Button5

    repeat-count : ��ָ�����¼���Ҫ�Ĵ������ָ�������DZ�����
        ����֮�С����磺

        <Btn1Down>(2)

        ָ�����һ�Ű�ť(button-1)�������Ρ�������������ټ��ϼӺ�(+)
        ������Ϊ��������Ŀ���춻���ָ�������磺

        <Btn1Down>(3+)

        ��Ϊ�����������Ρ�Ԥ����ظ�����Ϊһ�Ρ�

    һ���¼�������һ�����¼������ɣ��Զ���ֿ���������¼�������
����widget����ʱ����ص����ñ��������

    �����з���ʱ��ת�����������һЩ����������Լ��Ƿ����㡣����
��һ�������Ա���ϸ�ع۲죬�������������Ԫ����set ��unset������ת�룺

    �����Ե�˵����������¼�������ת��������ᱻ���㣬�������
      �� (��Щ��δָ�����¼�) �����ָ���������м䷢�����������
      �����㡣���磬set �ɱ�sweat ��serpent ��Ӧ��

    �����������δָ���¼���������ת����е���һ���¼����У�ת��
      �����������ԭ�ȵ����У�������ȥ�����µ����С����磬set ����
      ��sauerkraut��Ӧ����Ϊu ��ʹ��ת���������Ӧ��unset��

    �������һ���¼��ļ������г���һ�����¼����з���ת�������ֻ��
      Ӧ�õ�һ��ת�룺

      - ���һ�����ж�Ӧ������ (�Ҷ�)���϶̵��Ǹ�����ֻ���ڲ����
        �ϳ������вŻᷢ���������unset ����Ӧ������set ת�뽫����
        ���á�

      - ���һ������������һ�����е��м䷢�����磬����㶨������
        at��rate����ϳ����Ǹ���Զ���ᱻ��Ӧ����

�¼����μ�

���μ� (modifiers)��һЩ���ť��ϵָ����Ҫ�¼�����ʱ����Щ���豻��
�²Ż���ת�����������ļ��ť������ԶԼ�ť���ƶ�������Ӵ���
�¼�ָ�����μ������μ�Ϊ��

    Button1   ...        Button5
    Ctrl      Shift      Meta
    Lock

    �����δָ���κε����μ�ת������������Ϊ�� "���¼�����ʱ����
�����μ��Ƿ񱻰��£���ᱻ����"�����磬<BtnDown>�ᱻ���㣬���۵�ʱ
SHIFT ��META���Ƿ��б����¡�

    ����������Ҫָ�� "ֻ����û�����μ���ʱ�Ž��ܴ��¼�"������ʹ
���������μ� (pseudo-modifier) None�����磬None <BtnDown> ��ʹ�õ���
ť����ʱ��META��Ҳ�������򲻻����㡣

    ��һ���¼�ָ��һЩ���μ���Ϊ "ֻҪ���ת����ָ�������μ������
���μ������"����û�� "һ��Ҫ��ȫǡ�÷�ϲſ���"����˼�����磬
Ctrl <Key>a ���㰴�� meta-ctl-shift-a ʱ�Իᱻ���㡣

    ��������Ҫָ�� "ֻ�иպ÷�����μ�IJ�Ҫ"�������μ�֮ǰ��һ����
̾�� (!)�����磬!Ctrl <Key>a ���㰴�� meta-ctl-shift-a ʱ���ᱻ���㡣

    ��һ�����μ�ļ��� (�����ǿռ���) �����ƣ���Ϊ "������Щ���μ�
������"����Ҫ�ڲ����ܵ����μ�֮ǰ��һ��(~)�š����磬Shift~Meta <Key>t
�ᱻctl-shift-t���㣬���ᱻmeta-shift-t���㡣

    ���¼�ͨ�����Դ�Сд�������Ҫ��֣�����֮ǰ��һ��ð��(:)�����磬
���� H�� h��ɷ��<Key>H����ֻ��H �ŷ�� :<Key>H��

    ����ͬ�Գ��õ��¼���̬/ϸ���������дһ�㣬ת��������Գ��õ���
�μ�/�¼���̬���ͬ����ṩ��д��

          ��д               ��ȵ�ȫ��

          <Ctrl>             Ctrl <KeyDown>
          <Shift>            Shift <KeyDown>
          <Meta>             Meta <KeyDown>
          <Btn1Motion>       Button1 <Motion>
          ...
          <Btn5Motion>       Button5 <Motion>
          <BtnMotion>        �κΰ�ť�� <Motion>

���õĸ�ʽ�����õı���

ÿһ��ת����һ��������֮��ϵ��һ�����е�һ�����¼����ڱ����еĸ�
���������Կհ׷ֿ��ġ� (�����ö���ֿ����ǽ��ᵼ�´���)��

    ��������ø�ʽ���£�

      action-name(parameters)

��ʹû�в���ָ������������� (action-name)�����������Ȼ����ʡ�ԡ�
���磺

      start-selection()

�����������ƺ��������м����пհף��㽫��õ�һ������

    �������ֻ������ĸ�����֡�Ǯ��($)������(_)������Ԫ��ÿһ��widget
�ṩ���Լ������ü��� (����еĻ�) �������Ұ���Щ������Ƶ�Ӳ��
(hard-coded)����

    ����(parameters)��һ���㵽�����Ԫ�ִ��ı��У��м��Զ���ֿ�����
�������Ϊ���ض���������ָ�� (��ʵ�ϴ��������ò�û���κβ���) ����
���ִ����Բ�����ţ����磺

    insert-selection(PRIMARY)

����ǰ�����˫��ţ���������ͨ��Ϊ�����ִ��ڰ��˿հ׻�һ�����㣬��
�磺

    string("plot<x,y>")

û��һ��һ���Եķ����������ڲ����ִ��е��κ�λ�ð�һ��˫��ţ���Ȼ
������ string(ab"cd)'��˫��ŷ����ִ��м��ǿɱ�����ġ�Ҳû��һ���Ե�
������ͬһ�������ִ���ͬʱ���ִ���˫��š���Ϊ��ˣ���Щwidget�ڽ�
�������Լ��IJ���ʱ���������м��������Լ����﷨�������磺��xterm ��
VT100 widget�� string()���ã����һ������˫����ҿ�ͷΪ "0x"���ִ���
���ִ�������Ϊ���һ��ASCII ��Ԫ��ʮ���λ��

    �ڴ˽������Ƕ�ת���񼰸�ʽ���������ɴˣ���Ӧ�������˽��ڲ�ͬ��
�ֲ��г���ת�룬�ҿ�д���Լ���ת�롣Ϊ�˰����㣬�½��г��㳣�������
���Լ���ο˷����ǡ�

17.3 ��ת�����г��������

ת���ڹ����ϼ򵥣���ʵ���Ϻܻ��ҡ���ʹ�㳣��ʹ�ã��﷨��Ȼ���Ӷ��ѽ⡣
������Σ�������dz�ѧ�ߣ���õķ�ʽ�����Ա��˵�ת�뵱���Լ���ת���
����ָ��ҳ���м�����xbiff��xdm(Ŀǰ��δ���ܹ�춵ڣ����½���
)��xterm ��ת���������������

    ����㷢�����ת���д���Ļ����м���ֵ��ȥ��飺

    ��ת��ֻ��Ӧ����ʹ��Toolkit�ij�ʽ�ϡ��������ͼ�Է�ToolkitӦ�ó�
      ʽ����ת�룬�������������κ����⣬ֻ��ת�벻�����ö��ѡ�

      ����������һ��Ϊʲ�ᣬ�Զ�xcalc (����һ����Toolkit��ʽ)ʹ��ת��
      Ϊ�����һ��resource����� *xcalc*translations����һ��ת��?
      ����xrdb������������Ͽ⡣xrdb�����ᱧԹ����Ϊ��֪������һ��
      Ӧ�ó�ʽʹ�õ�resource����ֻ���趨���Ͽ⣬���ṩResource Manager
      ��ѯ��������ִ��xcalc �����ת����һ����֪�����Բ��������Ͽ��
      ѯת�룬��ȻҲ�����������ˡ�

    ����Ҫʡ�� #override�������ȷʵ֪����Ҫ��ʲ�ᡣ����������ʡ��
      ��������xedit �У��㽫����û���κεļ�������κεĶ��� (��Ϊ
      Ԥ���ת�� "<Key>:insert-char()"��ȥ����)��

    ��������ÿһ�о����սᡣ�������ת����е�һ�к�����"\n\"��"\n"
      �����������е�ת�붼�ᱻ���ԡ������������һ�е�ĩ�˼���һ����
      б��(\) ������ʡ���˵���������һ��������Ԫ(newline)�����ת���
      ���ᱻ���ԡ�(��������xrdb�����⣬���ת�������������)��

      ���ִ�������༭һ���ִ��ת���ʱ�ر����׷���

    �����㶨���ת���Ԥ���г�ͻʱ�����ܻᵼ����ֵ���Ϊ���ر��ǶԻ�
      ��ť�¼���ÿһ�ΰ��»�"Down"�¼�������ص�һ���ɿ���"Up"�¼�
      ������Դ˲���û����ȷ����ʱ�����ܻ���һ��Ԥ���ϵ����Ȼ���ڣ�
       (���̵İ��º��ɿ�Ҳ�dzɶԵ��¼�) �����ԣ�

           1.���Ԥ��ϵ����ļ���

      2.�����ֻ�԰���/�ɿ���Ե�һ��ָ��һ��ת�룬ȷ����һ�벢��Ԥ��
        ת���һ���ݣ�����ǵĻ����������ȷ��ָ��һ��ת�롣

      3.�������Ȼ���ܽ������ʱ�ɱ�����ȥ#override���⽫ȥ�����е�Ԥ
        ��ת�룬�����˽���������춺�Ԥ��ת���ͻ����ɣ�������Ϊ���
        ת����д���

    ��ת����������﷨����ȷ�����⣬�޷��ܺõĸ�����ԭ����ڡ�������
������������һ��ת����

          <Key>F6: string("abc""def")

      ������﷨������ȷ��F6��û�����ã�����Ҳ����������ѶϢ��

    �������ת��һ���е��¼�������Ҫ��ÿһ����ָ�����μ��������ȷ
      �ض�ÿһ����ָ���������������Ҫһ��ת��ʹ��ctl-X ctl-K��

          Ctrl <Key>X, Ctrl <Key>K: ...

      �������ʹ�ã�

          Ctrl <Key>X, <Key>K: ...

     ���ָ��Ϊ ctl-X K

    ������������widget�Ƿ�����ָ������ƺ���������xterm �����
      ����һ����Ŀ�ͷָ����

          xterm*Text*translations:

      �⽫ʲ����Ҳû����xterm ����Ӵ�widget�����VT100��ͨ��������
      xrdb��ת�����������з�Ӧ����Ϊ������û�?

    ��ת�����ָ����ȷ��Ҳ���Թ�������������ú���Ԥ�ڵIJ��������
      xterm ��ת�룺

          Meta Ctrl <Key>m: mode-menu()

      ����ȷ�ģ��һṤ������mode-menu()ʵ���ϼ�黬������а�ť�Ƿ���

      �л��������治���κ��¡�

    ����һ��ת���в�ָ�����μ����ζ�����μ���ʱת�����Ч��
      �����������Ϊ�� "�Ҳ����ں���û�����μ�" �������Ҫ�Ļ���ʹ��
       "None"��""��!��š�ʹ��ʱҪС��Ԥ���ת���Ƿ��������㡣

    ��ת�������widget��ָ���ģ�������ת���е����ñ�����widget�ṩ��
      ����ָ��ת��resource��Ƶĵط������������һ�㡣���磺

          xman*translations: \
          <EnterWindow>: reset()\n\
          <LeaveWindow>: set()

      ������������set()��reset()����ֻ�б�Command widget���壬��
      xman������������̬��widget�ɽ���ת�룬��ת��������ᱧԹ��Щ
      widget��δ�ṩset()��reset()�����֮��Ϊ������Щ��ָ��resource
      ��ƣ������ڱ���Ϊ xman*Command*translations ��

    �����κθ��resource����resource���Ͽⱻѯ��ʱ��Resource Manager
      �ᴫ��һ��ֵ��widget��������ص�ֵ�� "����ֵ" (characteristic)
       (resource���)�����widget�ĺ����Ե��������/��Ա��������
      ��������е�Text widgetָ��һ��һ���Ե�ת���ᣬ�ֶ�xeditָ��һ
      ��ת�룬ϣ�����Dz����Dz����ܵģ�ֻ��һ��ת���ᴫ��widget����
      �磺

          *Text*Translation: #override\
          (��Textһ���Ե�ת��)
          ...
          xedit*Text*Translation: #override\
          (��xedit ��Text�ض���ת��)
          ...

      ��ֻ�ܵõ���xedit ���ض���ת�룬�����ڱ𴦵õ�һ���Ե�ת�롣

      #override ����������������Ϊ "��ת������ִ��֮��" ������
      ��ȫ��ת����������?��ʱ��ʱ��ת�����������������ĸ�ֵ��
      ��Resource Manager�����widget����Resource Manager���ԣ�#override
      ֻ�Ǵ��ݸ�widgetֵ�IJ����е�һ�������ִ����ѡ�

    ��Ϊ��ʹ��resource��ָ��ת�룬���Դ�����������������ᷢ��Ϊ
�˼��ٴ���ġ�Χ�������ת�����о���ʱ������������ת��resource֮�ᣬ
�������ȷ����ӡ�����resource���Ͽ⡣���磺������xprog д��ת�룬
��ת���ڵ���mytrans �У�������������ִ�г�ʽ��

      xrdb mytrans ; xrdb -q ; xprog ...

17.4 ����

    ��������һ�º����˱��� Toolkit ��ʹ�õı�׼ת��ṹ��������ָ��
����һ�����ť����ʲ��Ӱ�졣��Щת��ָ����ÿһ��widget���������ʹ
�ñ�׼resource�ṹ����ת����widget���㿴����ζ�һ�����̵ļ���
��ť���������ƶ�һ��ָ������Ӵ����¼���ָ��ת�롣Ȼ�����ǽ���ָ����
ͬ״̬�����μ�����ɵ�Ӱ�죬�Ƚ��Ͻ��ض���������Ҫת����¼���

    ���µĵڶ������ݺ�����ͬ�����򣬵���Ϊ��ʽ������ϸ������ת����
�У����õ����﷨���ر������μ�

    ���ᣬ���Ǽ���ʹ��ת�볣������⣬��һЩ��ν�����ǵĽ��顣

    ���°��������ϡ����������˼��ٵĹ�����﷨���ӣ��������
�Ҳ��Զ��׼����һ��ʼ�������ѣ����ص��ġ���һЩ�򵥵�ת������ (Ҳ
����xterm)������ָ��ҳ�еġ������˵�ת���Ϊ������չ�޸ġ�������
����֮����չ���٣��㽫��Ϥ�﷨���ܿ�������ᷢ��ʲ��״����

=====

--
�� ��Դ:���������� cs3.xmu.edu.cn��[FROM: 210.34.6.201]
Technical Details
Message-ID: <3MN4hQ$X1W@cs3.xmu.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: f71f9,ccff889c62f37f0,start
X-Google-Attributes: gidf71f9,public
From: wlf.bbs@cs3.xmu.edu.cn (�����ǡ�����������)
Subject: ��  �ףɣΣģϣף�  ϵͳʹ��ָ��--(17)
Date: 1998/01/02
Message-ID: <3MN4hQ$X1W@cs3.xmu.edu.cn>
X-Deja-AN: 312073833
X-Filename: xwindow/M.883751978.A
Organization: XMU CS BBS
Newsgroups: cn.bbs.comp.xwindow