The biggest problem with kikbd or international keyboard under KDE in X Windows is that it doesn't work in Xfree86 that easily (you have to install some national packages and write garbage to the above-mentioned files). A user expects a simple way for configuring his or her keyboard for international settings. A simple way is to start KDE, change the international keyboard settings and immediately write in the language we chose (this will work for German and other languages, but in Eastern European keyboards some letters may not function in a system specific environment). According to the KDE documentation it should work, but it doesn't. After exploring many KDE resources on the net some time ago, I didn't find a solution (except for the one that forces you to install some national package). I know that some locale settings should be included in my bash_profile or csh login scripts, but after applying these settings I couldn't change (and install) keyboards in FreeBSD and it appeared like going through a darker forest compared to the information I already had regarding localization of KDE and X Windows under Xfree86. Here are some solutions for installing international keyboard layouts. If you want to write the "garbage", try to put the following in your FreeBSD or BSD bash_profile (or even Linux, but certainly not RedHat; RedHad Linux has very good international customization and my Czech RedHat does not require manipulation of bash_profile file at all):
LC_ALL=slovak (or any other language)
LANG=slovak (or any other language)
This is enough. Just continue reading.
The following information will help you set up any European keyboard layout (good for some older systems if the LC_ALL=language etc. doesn't work. However, this LC_ALL=language solution works in FreeBSD 4.1, but you must have ISO8859-2 fonts installed).
The next solution works for Xfree86 in FreeBSD 3.1 RELEASE (.Xmodmap solution), Corel Linux, Debian Linux, RedHat and FreeBSD 3.3 RELEASE and 4.0 RELEASE (KDE *.kimap solution). This solution maybe also useful when you use on older computer and older system, as some newer systems refuse to run on a 386 or 486 processor computer with less RAM. I tested it on those systems. Note: .Xmodmap solution works well with other windows managers.
Some Unixes override .Xmodmap setting when used with KDE. If .Xmodmap doesn't work, change must be made to the KDE kimap files in ../kikbd directory. This also pertains to LC_ALL=language; LANG=language solution. If .Xmodmap solution doesn't work in KDE, copy skz.kimap (at the end of this article) to /usr/local/share/apps/kikbd (FreeBSD), or to /usr/share/apps/kikbd directory (RedHat), which is your KDE keyboard directory. The problem with KDE is that after installing another keyboard, you have no chance to use (at least in older versions) it as KDE documentation doesn't clearly state how to define your locale settings in a bash_profile. After I installed Slovak keyboard in KDE, I couldn't write in Slovak or Czech, so I made few changes to skz.kimap file, which are explained later in this file. After applying these changes, no other changes are necessary - you don't need to write any special commands to your bash_profile or XF86Config. BUT WHEN YOU INSTALL ANOTHER KEYBOARD in START/SETTINGS/INPUT DEVICES/INTERNATIONAL KEYBOARDS from your KDE menu, CHECK AUTOSTART. Then everything will work fine. The difference between skz.kimap and sky.kimap (and csz.kimap and csy.kimap) is that y,Y and z,Z are swapped, so with skz.kimap or csz.kimap you will have z,Z instead of y,Y, but with sky.kimap or csy.kimap, y,Y doesn't change its position on the IBM English keyboard layout.
!!!BEAR IN MIND. THE FOLLOWING IS NOT NECESSARY IF YOUR LOCALIZATION WORKS BY PUTTING
LC_ALL=language
LANG=language
in your bash_profile. However, you must install the pertinent language fonts and put path in XF86Config file to these fonts.
a) Copy the "Compose" file from /usr/X11R6/lib/X11/locale/iso8859-2 to: /usr/X11R6/lib/X11/locale/iso8859-1 directory (yes, iso8859-1, not iso8859-2). Back up the original "Compose" file if you want (alternatively, copy other iso885*** Compose file to iso8859-1 directory).
b) Put the included .Xmodmap file to your root directory (Slovak language, or make your own .Xmodmap file) (or possibly put your own *.kimap file to the kikbd directory if Xmodmap will not work)
c) Install ISO8859-2 fonts (or other pertinent fonts).
d) Disable every "Scroll lock" uncommented line in your XF86Config, because our .Xmodmap uses scroll lock to switch between keyboards.
e) Put the appropriate fontpath for your newly installed fonts in our XF86Config file, if necessary. The .Xmodmap solution may be applied to all X keyboards; .Xmodmap file overrides all settings of keyboard layouts as defined in /usr/X11R6/lib/X11/xkb/symbols/, where are symbols for many international keyboards. The .Xmodmap solution will give you an enhanced Slovak typewriter keyboard layout. First, I must say that in my solution, different mapping is used for .Xmodmap file (and kimap file) for some ISO definitions. This means that the ISO definitions will either give you what they say they are (aacute [á], eacute [é], etc.), or they will not give you what they say they are (putting "threequarters" in your .Xmodmap file will give not give you "3/4" but "z" with a caron above it). For example, "mu" will give lcaron, "oslash" rcaron, etc. (Obviously, in other case you need to install some national packages to use "lcaron" definition instead of "mu"). Normally, you can not put "lcaron" to the .Xmodmap file, because it will not give you lcaron; you must write "mu" instead, or "guillemotright" for tcaron (again, you may avoid this if the "LANG=language" solution in your bash_profile works). I also tried hexadecimal numbers and they work.
However, other key definitions, for example, adieresis (a with two dots above it), uacute (u with slash above it), as well as dead_diaeresis do not require a substitution of other definitions and work pretty well as they're defined everywhere (dead key is a key when you press it, hold it yet nothing happens, but after pressing another key you will get a special letter).
The original "Compose" file in ../iso8859-1 directory can be fully utilized for Slovak or Czech keyboard layouts (Polish, Hungarian, Slovenian, Croatian), but there is only one problem with the Slovak or Czech keyboard (and other languages too) layout - dead_caron doesn't work. That's why you have to copy the "Compose" file from the iso8859-2 directory to iso8859-1 directory, or alternatively, you can edit the "Compose" file in iso8859-1 directory and put all references about "dead_caron" from iso8859-2/Compose to iso8859-1/Compose file. You can leave the Keyboard section in your XF86Config without much change. Put (if it's not already there) the following in the "Keyboard" section: Section "Keyboard"
Protocol "Standard"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "us"
The above doesn't have to be changed if
LC_ALL=language
LANG=language
solution works. The LC_ALL=language solution treats the dead_caron or any dead key well.
Some X Windows managers and/or environments override .Xmodmap settings, so if you use KDE and .Xmodmap doesn't work, use kikbd keymap instead of .Xmodmap. (A sample kikbd kimap for the Slovak language is included at the bottom of this file). The Slovak/Czech/English keyboard layout is switched to by a scroll lock. You may use languages only with the applications that have access to your ISO-8859-2 (or other fonts) fonts (this may not work with StarOffice or with other applications that have their own built-in fonts). StarOffice has its own fonts directory for afm fonts in ../xp3/fontmetrics/afm, and ps fonts in../xp3/pssoftfonts, so you must add the ISO8859-2 fonts directory to these directories (to tell StarOffice to use these fonts too) and edit fonts.dir file and add the symlinked fonts there. I can easily write with any language in StarOffice. Important note: If you want to exchange documents between StarOffice 5.1 or WordPerfect and MS Word, you must include the information about the windows 1250 encoding to the file you write (win1250 is similar to iso8859-2, but it's a little bit different). This doesn't need to be done if you use StarOffice 5.2, but for the older versions, you must use a converter from iso8859-2 to win1250. You can find one at my home page at htmlurl url="http://www.home.sk/www/man/bsd1.htm" name="http//www.home.sk/www/man/bsd1.htm" or at htmlurl url="http://freebsd.nfo.sk" name="http://www.freebsd.nfo.sk".
If you want to edit and make your own .Xmodmap keyboard layout definitions, I'll explain one line of the .Xmodmap file to make clear what you should do.
This explanation can be used for all keycodes. For example, the line: keycode 0x11 = 8 asterisk aacute 8 (note: keycode 0x11 is derived from xkeycaps utility; you can also use the X Windows "xev" utility to play more with keyboard puzzles) says that the first pair, the default one, (number "8" and "asterisk") will display number "8" when you press keycode 0x11 ("8"), will display asterisk when a "shift" key is pressed. After pressing the scroll lock, there's another definition: ISO_NEXT_GROUP, which means that when you press the default "8" key, no "8" will be displayed, but aacute ("á"); when you press the "shift" key, number "8" will be displayed. So if you change "aacute" and "8", anything you put instead of "aacute" and "8" will be displayed, for example:
keycode 0x11 = 8 asterisk semicolon colon
will give you "semicolon" and "colon" in your 0x11 keycode after pressing the scroll lock. If you delete the ISO_NEXT_GROUP (the next pair of definitions on the right), you will have only one group of keyboard definitions ("8" and "asterisk"). Be careful when editing the .Xmodmap file. You mustn't delete definitions that enable utilization of the scroll lock unless you know what you are doing. These are the lines such as: keycode 0x4e = ISO_Next_Group add mod5 = ISO_Next_Group etc. You must also keep in mind that Unixes are case sensitive. If you want to find out more about keycodes, install the package "xkeycaps" or use "xev".
keycode 0x09 = Escape
keycode 0x43 = F1 F11 F1 Multi_key
keycode 0x44 = F2 F12 F2 F12
keycode 0x45 = F3 F13 F3 F13 idiaeresis
keycode 0x46 = F4 F14 F4 F14 mu yen
keycode 0x47 = F5 F15 F5 F15 guillemotright guillemotleft
keycode 0x48 = F6 F16 F6 F16 ograve
keycode 0x49 = F7 F17 F7 dead_abovedot oacute
keycode 0x4A = F8 F18 F8 dead_breve acute
keycode 0x4B = F9 F19 F9 dead_cedilla ugrave
keycode 0x4C = F10 F20 F10 dead_ogonek
keycode 0x5F = F11 F21 dead_acute dead_caron
keycode 0x60 = F12 F22 dead_abovering dead_diaeresis
keycode 0x6F = Print Execute dead_iota
keycode 0x4E = ISO_Next_Group
keycode 0x6E = Pause
keycode 0x31 = grave asciitilde semicolon dead_diaeresis
keycode 0x0A = 1 exclam plus 1
keycode 0x0B = 2 at mu 2
keycode 0x0C = 3 numbersign onesuperior 3
keycode 0x0D = 4 dollar egrave 4
keycode 0x0E = 5 percent 0x0bb 5
keycode 0x0F = 6 asciicircum threequarters 6
keycode 0x10 = 7 ampersand yacute 7
keycode 0x11 = 8 asterisk aacute 8
keycode 0x12 = 9 parenleft iacute 9
keycode 0x13 = 0 parenright eacute 0
keycode 0x14 = minus underscore equal percent
keycode 0x15 = equal plus dead_acute dead_caron
keycode 0x33 = backslash bar ograve parenright
keycode 0x16 = BackSpace
keycode 0x6A = Insert
keycode 0x61 = Home
keycode 0x63 = Prior
keycode 0x4D = Num_Lock Pointer_EnableKeys
keycode 0x70 = KP_Divide slash
keycode 0x3F = KP_Multiply asterisk
keycode 0x52 = KP_Subtract minus
keycode 0x17 = Tab ISO_Left_Tab
keycode 0x18 = q Q
keycode 0x19 = w W
keycode 0x1A = e E
keycode 0x1B = r R
keycode 0x1C = t T
keycode 0x1D = y Y z Z
keycode 0x1E = u U
keycode 0x1F = i I
keycode 0x20 = o O
keycode 0x21 = p P
keycode 0x22 = bracketleft braceleft acute slash
keycode 0x23 = bracketright braceright diaeresis parenleft
keycode 0x24 = Return
keycode 0x6B = Delete
keycode 0x67 = End
keycode 0x69 = Next
keycode 0x4F = KP_Home 7 KP_Home
keycode 0x50 = KP_Up 8
keycode 0x51 = KP_Prior 9
keycode 0x56 = KP_Add plus
keycode 0x42 = Caps_Lock
keycode 0x26 = a A
keycode 0x27 = s S
keycode 0x28 = d D
keycode 0x29 = f F
keycode 0x2A = g G
keycode 0x2B = h H
keycode 0x2C = j J
keycode 0x2D = k K
keycode 0x2E = l L
keycode 0x2F = semicolon colon ocircumflex quotedbl
keycode 0x30 = apostrophe quotedbl section exclam
keycode 0x53 = KP_Left 4
keycode 0x54 = KP_Begin 5
keycode 0x55 = KP_Right 6
keycode 0x32 = Shift_L ISO_Next_Group
keycode 0x34 = z Z y Y
keycode 0x35 = x X
keycode 0x36 = c C
keycode 0x37 = v V
keycode 0x38 = b B
keycode 0x39 = n N
keycode 0x3A = m M
keycode 0x3B = comma less comma question
keycode 0x3C = period greater period colon
keycode 0x3D = slash question minus underscore
keycode 0x3E = Shift_R
keycode 0x62 = Up
keycode 0x57 = KP_End 1
keycode 0x58 = KP_Down 2
keycode 0x59 = KP_Next 3
keycode 0x6C = KP_Enter Return
keycode 0x25 = Control_L ISO_Next_Group
!keycode 0x40 = Alt_L Meta_L
keycode 0x40 = Meta_L Alt_L
keycode 0x41 = space
keycode 0x71 = Alt_R Meta_R
keycode 0x6D = Control_R
keycode 0x64 = Left
keycode 0x68 = Down
keycode 0x66 = Right
keycode 0x5A = KP_Insert 0
keycode 0x5B = KP_Delete period
!keysym Alt_L = Meta_L
!keysym F12 = Multi_key
clear Shift
!clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
add Shift = Shift_L Shift_R
add Control = Control_L Control_R
!add Mod1 = Alt_L Alt_R
add Mod1 = Meta_L Alt_R
add Mod2 = Num_Lock
add Mod5 = ISO_Next_Group
!add Mod1 =
!add Mod2 = Alt_R Alt_L Mode_switch
keycode 0x73 = ISO_Next_Group
keycode 0x74 = dead_acute dead_diaeresis
keycode 0x75 = dead_caron dead_abovering
_____________________________cut_here_____________________________
Now follows the KDE skz.kimap Config File, modified by me. You may manipulate this file according to my information and name it as skz.kimap and copy it to KDE ../kikbd directory mentioned above. If you want to use your own experimental keyboard layout, manipulate an existing kimap file but keep a copy of it.
_________________________cut_here________________________________
[International Keyboard]
Label=Skz
Locale=sk
[KeyboardMap]
CapsSymbols=q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m
keysym0=1,plus,1,exclam,,
keysym1=2,mu,2,at,,
keysym2=3,onesuperior,3,numbersign,,
keysym3=4,egrave,4,dollar,,
keysym4=5,0x0bb,5,percent,,
keysym5=6,threequarters,6,asciicircum,,
keysym6=7,yacute,7,ampersand,,
keysym7=8,aacute,8,asterisk,,
keysym8=9,iacute,9,parenleft,,
keysym9=0,eacute,0,parenright,,
keysym10=minus,equal,percent,minus,underscore,
keysym11=grave,dead_diaeresis,dead_circumflex,grave,asciitilde,
keysym12=equal,dead_acute,dead_caron,equal,plus,
keysym13=bracketleft,uacute,slash,bracketleft,braceleft,
keysym14=bracketright,adiaeresis,parenleft,bracketright,braceright,
keysym15=semicolon,ocircumflex,quotedbl,semicolon,colon,
keysym21=y,z,Z,,,
keysym22=z,y,Y,,,
#
I changed some keysyms above ("mu" instead of "lcaron") and added
#
the following lines:
keycode43=51,ograve,parenright,backslash,bar,
keycode40=48,section,exclam,apostrophe,quotedbl,
keycode51=59,comma,question,less,comma,
keycode52=60,period,colon,period,greater,
keycode53=61,minus,underscore,slash,question,
______________________cut_here___________________________
(The numbers of keycodes are derived from the "xkeycaps" utility)
The purpose of the following info is to help you build any .Xmodmap or kimap keyboard layout with iso8859-2 or other character sets. The ISO-8859-2 Character Set file is included here for you to know which names are used for pertinent keys. You should not bother about the numbers, but notice how keys are named. Much of this information is usefull to build a keyboard with ISO-8859-1 characters only, or a combination of Eastern European characters and Western characters. If you're going to use other languages than the Central European ones, find a pertinent table for your ISO*** character set on Internet. The gdkkeysyms.h file is in (RedHat) /usr/include/gdk/gdkkeysyms.h and it contains all the special names we're using here (it also contains names of Greek characters).
octal hex PostScript HTML entity character
----------------------------------------------------------------------
040 0x20 /space
041 0x21 /exclam !
042 0x22 /quotedbl " "
043 0x23 /numbersign #
044 0x24 /dollar $
045 0x25 /percent %
046 0x26 /ampersand & &
047 0x27 /quoteright '
050 0x28 /parenleft (
051 0x29 /parenright )
052 0x2a /asterisk *
053 0x2b /plus +
054 0x2c /comma ,
055 0x2d /hyphen -
056 0x2e /period .
057 0x2f /slash /
060 0x30 /zero 0
061 0x31 /one 1
062 0x32 /two 2
063 0x33 /three 3
064 0x34 /four 4
065 0x35 /five 5
066 0x36 /six 6
067 0x37 /seven 7
070 0x38 /eight 8
071 0x39 /nine 9
072 0x3a /colon :
073 0x3b /semicolon ;
074 0x3c /less < <
075 0x3d /equal =
076 0x3e /greater > >
077 0x3f /question ?
0100 0x40 /at @
0101 0x41 /A A
0102 0x42 /B B
0103 0x43 /C C
0104 0x44 /D D
0105 0x45 /E E
0106 0x46 /F F
0107 0x47 /G G
0110 0x48 /H H
0111 0x49 /I I
0112 0x4a /J J
0113 0x4b /K K
0114 0x4c /L L
0115 0x4d /M M
0116 0x4e /N N
0117 0x4f /O O
0120 0x50 /P P
0121 0x51 /Q Q
0122 0x52 /R R
0123 0x53 /S S
0124 0x54 /T T
0125 0x55 /U U
0126 0x56 /V V
0127 0x57 /W W
0130 0x58 /X X
0131 0x59 /Y Y
0132 0x5a /Z Z
0133 0x5b /bracketleft [
0134 0x5c /backslash \
0135 0x5d /bracketright ]
0136 0x5e /asciicircum ^
0137 0x5f /underscore _
0140 0x60 /quoteleft `
0141 0x61 /a a
0142 0x62 /b b
0143 0x63 /c c
0144 0x64 /d d
0145 0x65 /e e
0146 0x66 /f f
0147 0x67 /g g
0150 0x68 /h h
0151 0x69 /i i
0152 0x6a /j j
0153 0x6b /k k
0154 0x6c /l l
0155 0x6d /m m
0156 0x6e /n n
0157 0x6f /o o
0160 0x70 /p p
0161 0x71 /q q
0162 0x72 /r r
0163 0x73 /s s
0164 0x74 /t t
0165 0x75 /u u
0166 0x76 /v v
0167 0x77 /w w
0170 0x78 /x x
0171 0x79 /y y
0172 0x7a /z z
0173 0x7b /braceleft {
0174 0x7c /bar |
0175 0x7d /braceright }
0176 0x7e /tilde
0177 0x7f non-printable
0240 0xa0 /space
0241 0xa1 /Aogonek
0242 0xa2 /breve
0243 0xa3 /Lslash
0244 0xa4 /currency
0245 0xa5 /Lcaron
0246 0xa6 /Sacute
0247 0xa7 /section
0250 0xa8 /dieresis
0251 0xa9 /Scaron
0252 0xaa /Scedilla
0253 0xab /Tcaron
0254 0xac /Zacute
0255 0xad /hyphen
0256 0xae /Zcaron
0257 0xaf /Zdotaccent
0260 0xb0 /degree
0261 0xb1 /aogonek
0262 0xb2 /ogonek
0263 0xb3 /lslash
0264 0xb4 /acute
0265 0xb5 /lcaron
0266 0xb6 /sacute
0267 0xb7 /caron
0270 0xb8 /cedilla
0271 0xb9 /scaron
0272 0xba /scedilla
0273 0xbb /tcaron
0274 0xbc /zacute
0275 0xbd /hungarumlaut
0276 0xbe /zcaron
0277 0xbf /zdotaccent
0300 0xc0 /Racute
0301 0xc1 /Aacute Á
0302 0xc2 /Acircumflex Â
0303 0xc3 /Abreve
0304 0xc4 /Adieresis Ä
0305 0xc5 /Lacute
0306 0xc6 /Cacute
0307 0xc7 /Ccedilla Ç
0310 0xc8 /Ccaron
0311 0xc9 /Eacute É
0312 0xca /Eogonek
0313 0xcb /Edieresis Ë
0314 0xcc /Ecaron
0315 0xcd /Iacute Í
0316 0xce /Icircumflex Î
0317 0xcf /Dcaron
0320 0xd0 /Eth Ð
0321 0xd1 /Nacute
0322 0xd2 /Ncaron
0323 0xd3 /Oacute Ó
0324 0xd4 /Ocircumflex Ô
0325 0xd5 /Ohungarumlaut
0326 0xd6 /Odieresis Ö
0327 0xd7 /multiply
0330 0xd8 /Rcaron
0331 0xd9 /Uring
0332 0xda /Uacute Ú
0333 0xdb /Uhungarumlaut
0334 0xdc /Udieresis Ü
0335 0xdd /Yacute Ý
0336 0xde /Tcedilla
0337 0xdf /germandbls ß
0340 0xe0 /racute
0341 0xe1 /aacute á
0342 0xe2 /acircumflex â
0343 0xe3 /abreve
0344 0xe4 /adieresis ä
0345 0xe5 /lacute
0346 0xe6 /cacute
0347 0xe7 /ccedilla ç
0350 0xe8 /ccaron
0351 0xe9 /eacute é
0352 0xea /eogonek
0353 0xeb /edieresis ë
0354 0xec /ecaron
0355 0xed /iacute í
0356 0xee /icircumflex î
0357 0xef /dcaron
0360 0xf0 /dbar
0361 0xf1 /nacute
0362 0xf2 /ncaron
0363 0xf3 /oacute ó
0364 0xf4 /ocircumflex ô
0365 0xf5 /ohungarumlaut
0366 0xf6 /odieresis ö
0367 0xf7 /divide
0370 0xf8 /rcaron
0371 0xf9 /uring
0372 0xfa /uacute ú
0373 0xfb /uhungarumlaut
0374 0xfc /udieresis ü
0375 0xfd /yacute ý
0376 0xfe /tcedilla
0377 0xff /dotaccent
----------------------------------------------------------------------
First, try to see if definitions will give you (after installing pertinent fonts and keyboard in X) what they say they are. If they will not give you what they say they are (some keycodes will be unfunctional), then you must make a substitution. Definitions which will not give you what they say they are (when the LC_ALL=language solution does not work) can be traced by their visual shape in Western Latin 1 encoding. For example, if you load a Slovak website, do not use ISO8859-2 character set encoding for viewing, but Western ISO8859-1 encoding for viewing. Thus you will see bad fonts with letters like micron and so on. You will see what you must substitute. But if you don't know what "?" is called in ISO terminology, find and download an appropriate character set table for ISO-8859-1. (However, much of the information can be used from the above ISO8859-2 Character Set Table.) It must be somewhere on the net.
The following symbols on your right is what I found out through my research. This is just an example. When you use a "Pound" definition in Xmodmap or kimap file, the X Windows will display you a Lslash instead (in relation to using iso8859-2 fonts of course). When you choose some easy KDE Text Editor, select iso8859-2 fonts. NOTE: vowel *acute signs require no substitution, therefore I omitted iacute, aacute etc.
0243 0xa3 /Lslash "Pound" in Xmodmap or kimap file will give you Lslash.
0245 0xa5 /Lcaron Writing "yen" to kimap or Xmodmap file wil give us Lcaron
0251 0xa9 /Scaron copyright (will give us Scaron)
0253 0xab /Tcaron guillemotleft (will give us Tcaron)
0256 0xae /Zcaron registered
0265 0xb5 /lcaron mu
0271 0xb9 /scaron onesuperior
0273 0xbb /tcaron guillemotright
0276 0xbe /zcaron threequarters
0306 0xc6 /Cacute find out yourself
0312 0xca /Eogonek find out yourself
0313 0xcb /Edieresis Edieresis
0314 0xcc /Ecaron find out yourself
0317 0xcf /Dcaron find out yourself
0321 0xd1 /Nacute Ograve
0322 0xd2 /Ncaron find out yourself
0324 0xd4 /Ocircumflex Ocircumflex
0350 0xe8 /ccaron egrave
0361 0xf1 /nacute ntilde
You may experiment to find out which definitions will give you which characters, it shouldn't be difficult. This is just a hint on how to start. I didn't go on to investigate further definitions because I have my Slovak and Czech keyboards and I'm not, for now, interested to use other keyboards. Look at my homage and build your own keyboard.