Personnaliser le mappage des touches et les fichiers de ressources de Forms sur le Web -fmrweb.res, fmrpcweb.res
S'APPLIQUE À :
Oracle Forms - Version 6.0.8.26.0 et ultérieures
Les informations de ce document s'appliquent à toutes les plateformes.
***Pertinence vérifiée le 2 janvier 2014***
Pertinence vérifiée le 9 août 2015
S'applique à toutes les versions de Forms sur le Web, de Forms 6i à Forms 11g. Notez que certains mappages de touches peuvent différer selon la version.
OBJECTIF
Expliquer le fonctionnement du mappage des touches dans Forms sur le Web et la façon de réassigner les touches et les fonctions.
SOLUTION
Pour Forms sur le Web, les mappages de touches sont définis dans un fichier texte modifiable. Oracle Terminal n'est plus utilisé. Les mappages de touches des ressources sont en fait chargés en mémoire. Par défaut, ils reflètent ceux du fichier fmrweb.res. Ce fichier ne reprend PAS les anciens mappages clavier du mode client-serveur sous MS Windows : il correspond plutôt aux mappages utilisés en client-serveur sous Unix X-Windows/ Motif. Le fichier fmrweb.res et les autres fichiers de ressources se trouvent aux emplacements suivants :
10gR2
UNIX -> ORACLE_HOME/forms/admin/resource/<country>/fmrweb.res
Windows -> ORACLE_HOME\forms\fmrweb.res
11g
UNIX -> ORACLE_INSTANCE/config/FormsComponent/forms/admin/resource/<country>/fmrweb.res
Windows -> ORACLE_INSTANCE\config\FormsComponent\forms\fmrwebs.res
Un fichier nommé fmrpcweb.res est fourni ; il contient les mappages clavier du mode client-serveur sous MS Windows. Pour utiliser ce fichier, vous pouvez :
a. Indiquer fmrpcweb.res dans le paramètre term de l'URL. Par exemple, http://machine.domain:port/forms/frmservlet?term=<path to file>/fmrpcweb.res
b. Indiquer fmrpcweb.res dans le fichier formsweb.cfg. Par exemple, term=<path to file>/fmrpcweb.res
Remarque : si un autre paramètre NLS_LANG est utilisé, un autre fichier de ressources sera chargé. Par exemple, si NLS_LANG=GERMAN_GERMANY=WE8ISO8859P1, c'est le fichier fmrwebd.res qui sera utilisé. Il existe un fichier de ressources pour chaque langue prise en charge.
Personnalisation du fichier de ressources
------------------------------
Comme les fichiers de ressources sont des fichiers texte, chacun d'eux peut être personnalisé avec un éditeur de texte standard tel que notepad, vi, etc. Le fichier texte contient sa propre documentation et s'explique relativement de lui-même.
Remarque : les possibilités de personnalisation sont limitées, en particulier par rapport aux formulaires en mode caractère.
De plus, pour vous assurer que le bon fichier de ressources est utilisé, indiquez-le au moyen du paramètre term, comme expliqué ci-dessus.
Voici le contenu du fichier fmrweb.res, auquel quelques commentaires ont été ajoutés pour plus de clarté.
# FMRWEB.RES is the key definition file for webforms. The syntax is:
#
# JFN : JMN : URKS : FFN : URFD (whitespace ignored)
#
# JFN = Java function number - This corresponds to a key on the windows PS/2 keyboard
# JMN = Java modifiers number - Specifies additional key(s) required to be pressed along with the JFN key.
# URKS = User-readable key sequence (double-quoted) - Used to display the key(s) corresponding to the function.
# FFN = Forms function number - Number internally coded to a specific forms function such as "Enter-query", "Execute-query",etc.
# URFD = User-readable function description (double-quoted) - Used to display the function that Forms will perform when the specified key is pressed
#
# JAVA FUNCTION NUMBER
# 33 = PageUp
# 34 = PageDown
# 35 = End
# 36 = Home
# 37 = LeftArrow
# 38 = UpArrow
# 39 = RightArrow
# 40 = DownArrow
# 65 - 90 = Ctrl+A thru Ctrl+Z (These will always have the control
# modifier explicitly included, as well as any other
# modifiers that might be used.)
# 112 - 123 = F1 thru F12
# 9 = Tab (Ctrl+I, without the control modifier)
# 10 = Return (Ctrl+J, without the control modifier)
#
# JAVA MODIFIERS NUMBER
# Equal to the sum of the values for the modifier keys:
# 0 = None
# 1 = Shift
# 2 = Control
# 4 = Meta - This refers to the windows logo key between the Ctrl and Alt key and currently cannot be mapped
# 8 = Alt
# Note that 3 corresponds to Shift + Control. 9 would correspond to Shift + Alt
#
# FORMS FUNCTION NUMBER
# The Forms function numbers match the function numbers found in a typical Forms key binding file.
#
# USER-READABLE STRINGS
# The double-quoted strings appear when users click [Show Keys], and
# are used for this purpose only. These strings can be translated as
# needed. Note that the strings do not affect what actually happens
# when end users press a particular key sequence.
#
9 : 0 : "Tab" : 1 : "Next Field"
9 : 1 : "Shift+Tab" : 2 : "Previous Field"
116 : 0 : "F5" : 3 : "Clear Field"
38 : 0 : "Up" : 6 : "Up"
40 : 0 : "Down" : 7 : "Down"
33 : 0 : "PageUp" : 12 : "Scroll Up"
34 : 0 : "PageDown" : 13 : "Scroll Down"
69 : 2 : "Ctrl+E" : 22 : "Edit"
10 : 0 : "Return" : 27 : "Return"
76 : 2 : "Ctrl+L" : 29 : "List of Values"
115 : 0 : "F4" : 32 : "Exit"
75 : 2 : "Ctrl+K" : 35 : "Show Keys"
83 : 2 : "Ctrl+S" : 36 : "Commit"
118 : 1 : "Shift+F7" : 61 : "Next Primary Key"
117 : 0 : "F6" : 62 : "Clear Record"
38 : 2 : "Ctrl+Up" : 63 : "Delete Record"
117 : 1 : "Shift+F6" : 64 : "Duplicate Record"
40 : 2 : "Ctrl+Down" : 65 : "Insert Record"
119 : 1 : "Shift+F8" : 66 : "Next Set of Records"
1005: 0 : "Down" : 67 : "Next Record"
1004: 0 : "Up" : 68 : "Previous Record"
118 : 0 : "F7" : 69 : "Clear Block"
66 : 2 : "Ctrl+B" : 70 : "Block Menu"
34 : 1 : "Shift+PageDown" : 71 : "Next Block"
33 : 1 : "Shift+PageUp" : 72 : "Previous Block"
116 : 1 : "Shift+F5" : 73 : "Duplicate Field"
119 : 0 : "F8" : 74 : "Clear Form"
122 : 0 : "F11" : 76 : "Enter Query"
122 : 2 : "Ctrl+F11" : 77 : "Execute Query"
69 : 3 : "Shift+Ctrl+E" : 78 : "Display Error"
80 : 2 : "Ctrl+P" : 79 : "Print"
123 : 0 : "F12" : 80 : "Count Query"
85 : 2 : "Ctrl+U" : 81 : "Update Record"
121 : 3 : "Shift+Ctrl+F10" : 82 : "Function 0"
112 : 3 : "Shift+Ctrl+F1" : 83 : "Function 1"
113 : 3 : "Shift+Ctrl+F2" : 84 : "Function 2"
114 : 3 : "Shift+Ctrl+F3" : 85 : "Function 3"
115 : 3 : "Shift+Ctrl+F4" : 86 : "Function 4"
116 : 3 : "Shift+Ctrl+F5" : 87 : "Function 5"
117 : 3 : "Shift+Ctrl+F6" : 88 : "Function 6"
118 : 3 : "Shift+Ctrl+F7" : 89 : "Function 7"
119 : 3 : "Shift+Ctrl+F8" : 90 : "Function 8"
120 : 3 : "Shift+Ctrl+F9" : 91 : "Function 9"
113 : 0 : "F2" : 95 : "List Tab Pages"
72 : 2 : "Ctrl+H" : 30 : "Help"
REMARQUE : conservez toujours une copie de sauvegarde du fichier de ressources d'origine que vous modifiez, qu'il s'agisse de fmrweb.res, de fmrpcweb.res ou d'un autre fichier. Les exemples ci-dessous supposent que vous modifiez le fichier fmrweb.res.
Exemples
=========
Inverser les mappages des fonctions Enter et Execute :
122 : 0 : "F11" : 76 : "Enter Query"
122 : 2 : "Ctrl+F11" : 77 : "Execute Query"
Remplacer par :
122 : 2 : "Ctrl+F11" : 76 : "Enter Query"
122 : 0 : "F11" : 77 : "Execute Query"
Exceptions/ mappages de touches particuliers
--------------------------------------------------
A : Mappage de F2
Associez l'entrée par défaut de F2, "List Tab Pages", à une autre touche.
Voici un exemple de l'entrée par défaut :
113: 0 : "F2" : 95 : "List Tab Pages"
Elle doit être explicitement remplacée par un autre mappage de touche, comme le suivant :
113: 8 : "F2" : 95 : "List Tab Pages"
Pour associer la fonction F2 à la touche F2, mettez en commentaire avec le symbole # les lignes qui commencent par "113 : 0" et "113 : 8", puis ajoutez les lignes suivantes à la fin du fichier de ressources.
113: 0 : "F2" : 84 : "Function 2"
113: 8 : " " : 95 : " "
Explication :
Une nouvelle fonction, qui utilise F2 par défaut, a été ajoutée. Pour pouvoir mapper la touche F2, il faut explicitement associer cette nouvelle fonction à une autre touche. Cette fonction a été ajoutée pour permettre la navigation au clavier entre les pages d'un canevas à onglets ; elle utilise F2 par défaut.
Même si elle est mise en commentaire et n'est pas associée à F2, la touche F2 ne peut pas être mappée tant que cette fonction, Forms Function Number 95, n'est pas associée à une autre touche.
B : Mappage de la touche ENTER pour déclencher le KEY-ENTER-TRIGGER sur le Web
Par défaut, en déploiement client-serveur comme sur le Web, la touche ENTER place le curseur sur l'élément navigable suivant du bloc. Pour modifier ce comportement par défaut, il faut revoir les mappages de touches dans le fichier de ressources de Forms.
Modifiez le fichier de ressources approprié. Dans cet exemple, nous utilisons fmrweb.res et remplaçons, pour la touche Return, le Forms Function Number (FFN) 27 par 75. La ligne doit devenir :
10 : 0 : "Return" : 75 : "Return"
Par défaut, la ligne comporte un FFN de 27 et se présente ainsi :
10 : 0 : "Return" : 27 : "Return"
Cette ligne ne déclenche PAS le trigger Key-Enter, car la touche Return ou Enter renvoie en réalité la fonction Return, représentée par le FFN 27. Le FFN 75 représente la fonction Enter et déclenchera le trigger Key-Enter.
C : Touches numériques
L'objectif est de mapper les touches CTRL+<chiffre> dans fmrweb.res pour les chiffres de 0 à 9. Le fichier fmrweb.res ne mentionne aucune touche Java Function pour les chiffres ; elles sont donc listées à la fin de cette note :
Cet exemple montre comment associer CTRL+1 à 'Next Record'
(1) Dans la liste des valeurs Java Function Number ci-dessous, notez que VK_1 correspond à la touche "1" du clavier. La valeur décimale de cette touche est 49.
(2) Utilisez cette valeur décimale pour mapper la touche numérique 1 dans fmrweb.res. Par exemple, CTRL+1 peut être associée à 'Next Record' ainsi :
49 : 2 : "CTRL+1" : 67 : "Next Record"
D : Associer une combinaison de touches à un comportement antérieur à la migration
La migration de votre application Forms peut exiger de conserver, pour une combinaison de touches donnée, un comportement qui n'est plus offert en standard dans la nouvelle version.
Il faut alors parfois écrire du code personnalisé, qui pourra être placé dans un trigger KEY-FN déclenché par votre combinaison de touches. (FFN 82 à 91)
E : Mappage de la touche Esc pour quitter un formulaire Web
27 : 0 : "Esc" : 32 : "Exit"
Veillez à mettre en commentaire ou à supprimer l'ancienne entrée
#115 : 0 : "F4" : 32 : "Exit"
Le premier nombre (115) peut varier selon la version ou la plateforme.
Lorsque vous exécutez le formulaire Web et appuyez sur la touche Esc, le formulaire se ferme.
Valeurs des Java Function Numbers
===========================
Les valeurs Java Function Number suivantes (qui correspondent aux touches du clavier) ont été tirées d'Oracle Terminal afin de présenter une liste plus complète que celle de fmrwerb.res et des autres fichiers de ressources. Utilisez la valeur décimale pour désigner la touche.
Notez que certaines des touches listées ne peuvent pas forcément être mappées.
Touche et valeur hexadécimale Valeur décimale
public static final int VK_ENTER = '\n';
public static final int VK_BACK_SPACE = '\b';
public static final int VK_TAB = '\t';
public static final int VK_CANCEL = 0x03; 3
public static final int VK_CLEAR = 0x0C; 12
public static final int VK_SHIFT = 0x10; 16
public static final int VK_CONTROL = 0x11; 17
public static final int VK_ALT = 0x12; 18
public static final int VK_PAUSE = 0x13; 19
public static final int VK_CAPS_LOCK = 0x14; 20
public static final int VK_ESCAPE = 0x1B; 27
public static final int VK_SPACE = 0x20; 32
public static final int VK_PAGE_UP = 0x21; 33
public static final int VK_PAGE_DOWN = 0x22; 34
public static final int VK_END = 0x23; 35
public static final int VK_HOME = 0x24; 36
public static final int VK_LEFT = 0x25; 37
public static final int VK_UP = 0x26; 38
public static final int VK_RIGHT = 0x27; 39
public static final int VK_DOWN = 0x28; 40
public static final int VK_COMMA = 0x2C; 44
public static final int VK_PERIOD = 0x2E; 46
public static final int VK_SLASH = 0x2F; 47
Touches 0-9 du clavier
public static final int VK_0 = 0x30; 48
public static final int VK_1 = 0x31; 49
public static final int VK_2 = 0x32; 50
public static final int VK_3 = 0x33; 51
public static final int VK_4 = 0x34; 52
public static final int VK_5 = 0x35; 53
public static final int VK_6 = 0x36; 54
public static final int VK_7 = 0x37; 55
public static final int VK_8 = 0x38; 56
public static final int VK_9 = 0x39; 57
public static final int VK_SEMICOLON = 0x3B; 59
public static final int VK_EQUALS = 0x3D; 61
Touches a - z du clavier
public static final int VK_A = 0x41; 65
public static final int VK_B = 0x42; 66
public static final int VK_C = 0x43; 67
public static final int VK_D = 0x44; 68
public static final int VK_E = 0x45; 69
public static final int VK_F = 0x46; 70
public static final int VK_G = 0x47; 71
public static final int VK_H = 0x48; 72
public static final int VK_I = 0x49; 73
public static final int VK_J = 0x4A; 74
public static final int VK_K = 0x4B; 75
public static final int VK_L = 0x4C; 76
public static final int VK_M = 0x4D; 77
public static final int VK_N = 0x4E; 78
public static final int VK_O = 0x4F; 79
public static final int VK_P = 0x50; 80
public static final int VK_Q = 0x51; 81
public static final int VK_R = 0x52; 82
public static final int VK_S = 0x53; 83
public static final int VK_T = 0x54; 84
public static final int VK_U = 0x55; 85
public static final int VK_V = 0x56; 86
public static final int VK_W = 0x57; 87
public static final int VK_X = 0x58; 88
public static final int VK_Y = 0x59; 89
public static final int VK_Z = 0x5A; 90
public static final int VK_OPEN_BRACKET = 0x5B; 91
public static final int VK_BACK_SLASH = 0x5C; 92
public static final int VK_CLOSE_BRACKET = 0x5D; 93
public static final int VK_NUMPAD0 = 0x60; 96
public static final int VK_NUMPAD1 = 0x61; 97
public static final int VK_NUMPAD2 = 0x62; 98
public static final int VK_NUMPAD3 = 0x63; 99
public static final int VK_NUMPAD4 = 0x64; 100
public static final int VK_NUMPAD5 = 0x65; 101
public static final int VK_NUMPAD6 = 0x66; 102
public static final int VK_NUMPAD7 = 0x67; 103
public static final int VK_NUMPAD8 = 0x68; 104
public static final int VK_NUMPAD9 = 0x69; 105
public static final int VK_MULTIPLY = 0x6A; 106
public static final int VK_ADD = 0x6B; 107
public static final int VK_SEPARATER = 0x6C; 108
public static final int VK_SUBTRACT = 0x6D; 109
public static final int VK_DECIMAL = 0x6E; 110
public static final int VK_DIVIDE = 0x6F; 111
F1 - F12
public static final int VK_F1 = 0x70; 112
public static final int VK_F2 = 0x71; 113
public static final int VK_F3 = 0x72; 114
public static final int VK_F4 = 0x73; 115
public static final int VK_F5 = 0x74; 116
public static final int VK_F6 = 0x75; 117
public static final int VK_F7 = 0x76; 118
public static final int VK_F8 = 0x77; 119
public static final int VK_F9 = 0x78; 120
public static final int VK_F10 = 0x79; 121
public static final int VK_F11 = 0x7A; 122
public static final int VK_F12 = 0x7B; 123
public static final int VK_DELETE = 0x7F; 127 /* ASCII DEL */
public static final int VK_NUM_LOCK = 0x90; 144
public static final int VK_SCROLL_LOCK = 0x91; 145
public static final int VK_PRINTSCREEN = 0x9A; 154
public static final int VK_INSERT = 0x9B; 155
public static final int VK_HELP = 0x9C; 156
public static final int VK_META = 0x9D; 157
public static final int VK_BACK_QUOTE = 0xC0; 192
public static final int VK_QUOTE = 0xDE; 222
RÉFÉRENCES
NOTE:209671.1 - How to Change / Customize the Key Mappings for Webforms?
NOTE:66534.1 - Java Function Numbers And Key Mappings For Forms Deployed Over Web