package com.BlossomAssociates.keyboard; import java.applet.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class JankoApplet extends Applet { public JankoApplet() { super(); } public void init() { Panel[] row = { new Panel(), new Panel(), new Panel(), new Panel() }; row[1].add( new Label( "" ) ); row[3].add( new Label( "" ) ); Button a3u = new Button( "A" ); row[0].add( a3u ); row[2].add( new Label( " " ) ); Button as3u = new Button( "#" ); row[1].add( as3u ); row[3].add( new Label( " " ) ); Button b3u = new Button( "B" ); Button b3l = new Button( "B" ); row[0].add( b3u ); row[2].add( b3l ); Button c4u = new Button( "C" ); Button c4l = new Button( "C" ); row[1].add( c4u ); row[3].add( c4l ); Button cs4u = new Button( "#" ); Button cs4l = new Button( "#" ); row[0].add( cs4u ); row[2].add( cs4l ); Button d4u = new Button( "D" ); Button d4l = new Button( "D" ); row[1].add( d4u ); row[3].add( d4l ); Button ds4u = new Button( "#" ); Button ds4l = new Button( "#" ); row[0].add( ds4u ); row[2].add( ds4l ); Button e4u = new Button( "E" ); Button e4l = new Button( "E" ); row[1].add( e4u ); row[3].add( e4l ); Button f4u = new Button( "F" ); Button f4l = new Button( "F" ); row[0].add( f4u ); row[2].add( f4l ); Button fs4u = new Button( "#" ); Button fs4l = new Button( "#" ); row[1].add( fs4u ); row[3].add( fs4l ); Button g4u = new Button( "G" ); Button g4l = new Button( "G" ); row[0].add( g4u ); row[2].add( g4l ); Button gs4u = new Button( "#" ); Button gs4l = new Button( "#" ); row[1].add( gs4u ); row[3].add( gs4l ); Button a4u = new Button( "A" ); Button a4l = new Button( "A" ); row[0].add( a4u ); row[2].add( a4l ); Button as4u = new Button( "#" ); Button as4l = new Button( "#" ); row[1].add( as4u ); row[3].add( as4l ); Button b4u = new Button( "B" ); Button b4l = new Button( "B" ); row[0].add( b4u ); row[2].add( b4l ); Button c5u = new Button( "C" ); Button c5l = new Button( "C" ); row[1].add( c5u ); row[3].add( c5l ); Button cs5u = new Button( "#" ); Button cs5l = new Button( "#" ); row[0].add( cs5u ); row[2].add( cs5l ); Button d5u = new Button( "D" ); Button d5l = new Button( "D" ); row[1].add( d5u ); row[3].add( d5l ); Button ds5u = new Button( "#" ); Button ds5l = new Button( "#" ); row[0].add( ds5u ); row[2].add( ds5l ); Button e5u = new Button( "E" ); Button e5l = new Button( "E" ); row[1].add( e5u ); row[3].add( e5l ); Button f5u = new Button( "F" ); Button f5l = new Button( "F" ); row[0].add( f5u ); row[2].add( f5l ); Button fs5u = new Button( "#" ); Button fs5l = new Button( "#" ); row[1].add( fs5u ); row[3].add( fs5l ); Button g5u = new Button( "G" ); Button g5l = new Button( "G" ); row[0].add( g5u ); row[2].add( g5l ); Button gs5u = new Button( "#" ); row[1].add( gs5u ); row[3].add( new Label( "" ) ); row[0].add( new Label( "" ) ); row[2].add( new Label( "" ) ); setLayout( new GridLayout( 4, 1 ) ); add( row[0] ); add( row[1] ); add( row[2] ); add( row[3] ); java.net.URL base = getDocumentBase(); try { a3Sounder = new Sounder( getAudioClip( base, "a3.au" ) ); a3u.addActionListener( a3Sounder ); as3Sounder = new Sounder( getAudioClip( base, "as3.au" ) ); as3u.addActionListener( as3Sounder ); b3Sounder = new Sounder( getAudioClip( base, "b3.au" ) ); b3u.addActionListener( b3Sounder ); b3l.addActionListener( b3Sounder ); c4Sounder = new Sounder( getAudioClip( base, "c4.au" ) ); c4u.addActionListener( c4Sounder ); c4l.addActionListener( c4Sounder ); cs4Sounder = new Sounder( getAudioClip( base, "cs4.au" ) ); cs4u.addActionListener( cs4Sounder ); cs4l.addActionListener( cs4Sounder ); d4Sounder = new Sounder( getAudioClip( base, "d4.au" ) ); d4u.addActionListener( d4Sounder ); d4l.addActionListener( d4Sounder ); ds4Sounder = new Sounder( getAudioClip( base, "ds4.au" ) ); ds4u.addActionListener( ds4Sounder ); ds4l.addActionListener( ds4Sounder ); e4Sounder = new Sounder( getAudioClip( base, "e4.au" ) ); e4u.addActionListener( e4Sounder ); e4l.addActionListener( e4Sounder ); f4Sounder = new Sounder( getAudioClip( base, "f4.au" ) ); f4u.addActionListener( f4Sounder ); f4l.addActionListener( f4Sounder ); fs4Sounder = new Sounder( getAudioClip( base, "fs4.au" ) ); fs4u.addActionListener( fs4Sounder ); fs4l.addActionListener( fs4Sounder ); g4Sounder = new Sounder( getAudioClip( base, "g4.au" ) ); g4u.addActionListener( g4Sounder ); g4l.addActionListener( g4Sounder ); gs4Sounder = new Sounder( getAudioClip( base, "gs4.au" ) ); gs4u.addActionListener( gs4Sounder ); gs4l.addActionListener( gs4Sounder ); a4Sounder = new Sounder( getAudioClip( base, "a4.au" ) ); a4u.addActionListener( a4Sounder ); a4l.addActionListener( a4Sounder ); as4Sounder = new Sounder( getAudioClip( base, "as4.au" ) ); as4u.addActionListener( as4Sounder ); as4l.addActionListener( as4Sounder ); b4Sounder = new Sounder( getAudioClip( base, "b4.au" ) ); b4u.addActionListener( b4Sounder ); b4l.addActionListener( b4Sounder ); c5Sounder = new Sounder( getAudioClip( base, "c5.au" ) ); c5u.addActionListener( c5Sounder ); c5l.addActionListener( c5Sounder ); cs5Sounder = new Sounder( getAudioClip( base, "cs5.au" ) ); cs5u.addActionListener( cs5Sounder ); cs5l.addActionListener( cs5Sounder ); d5Sounder = new Sounder( getAudioClip( base, "d5.au" ) ); d5u.addActionListener( d5Sounder ); d5l.addActionListener( d5Sounder ); ds5Sounder = new Sounder( getAudioClip( base, "ds5.au" ) ); ds5u.addActionListener( ds5Sounder ); ds5l.addActionListener( ds5Sounder ); e5Sounder = new Sounder( getAudioClip( base, "e5.au" ) ); e5u.addActionListener( e5Sounder ); e5l.addActionListener( e5Sounder ); f5Sounder = new Sounder( getAudioClip( base, "f5.au" ) ); f5u.addActionListener( f5Sounder ); f5l.addActionListener( f5Sounder ); fs5Sounder = new Sounder( getAudioClip( base, "fs5.au" ) ); fs5u.addActionListener( fs5Sounder ); fs5l.addActionListener( fs5Sounder ); g5Sounder = new Sounder( getAudioClip( base, "g5.au" ) ); g5u.addActionListener( g5Sounder ); g5l.addActionListener( g5Sounder ); gs5Sounder = new Sounder( getAudioClip( base, "gs5.au" ) ); gs5u.addActionListener( gs5Sounder ); } catch ( java.security.AccessControlException ace ) { System.err.println( ace.getMessage() ); } listen( this, new KeyAdapter() { public void keyPressed( KeyEvent ke ) { int k = ke.getKeyCode(); System.out.println( "key code: " + k ); if ( ke.VK_1 == k ) { a3Sounder.actionPerformed( null ); } else if ( ke.VK_Q == k ) as3Sounder.actionPerformed( null ); else if ( ke.VK_2 == k || ke.VK_A == k ) b3Sounder.actionPerformed( null ); else if ( ke.VK_W == k || ke.VK_Z == k ) c4Sounder.actionPerformed( null ); else if ( ke.VK_3 == k || ke.VK_S == k ) cs4Sounder.actionPerformed( null ); else if ( ke.VK_E == k || ke.VK_X == k ) d4Sounder.actionPerformed( null ); else if ( ke.VK_4 == k || ke.VK_D == k ) ds4Sounder.actionPerformed( null ); else if ( ke.VK_R == k || ke.VK_C == k ) e4Sounder.actionPerformed( null ); else if ( ke.VK_5 == k || ke.VK_F == k ) f4Sounder.actionPerformed( null ); else if ( ke.VK_T == k || ke.VK_V == k ) fs4Sounder.actionPerformed( null ); else if ( ke.VK_6 == k || ke.VK_G == k ) g4Sounder.actionPerformed( null ); else if ( ke.VK_Y == k || ke.VK_B == k ) gs4Sounder.actionPerformed( null ); else if ( ke.VK_7 == k || ke.VK_H == k ) a4Sounder.actionPerformed( null ); else if ( ke.VK_U == k || ke.VK_N == k ) as4Sounder.actionPerformed( null ); else if ( ke.VK_8 == k || ke.VK_J == k ) b4Sounder.actionPerformed( null ); else if ( ke.VK_I == k || ke.VK_M == k ) c5Sounder.actionPerformed( null ); else if ( ke.VK_9 == k || ke.VK_K == k ) cs5Sounder.actionPerformed( null ); else if ( ke.VK_O == k || ke.VK_COMMA == k ) d5Sounder.actionPerformed( null ); else if ( ke.VK_0 == k || ke.VK_L == k ) ds5Sounder.actionPerformed( null ); else if ( ke.VK_P == k || ke.VK_PERIOD == k ) e5Sounder.actionPerformed( null ); else if ( ke.VK_SUBTRACT == k || ke.VK_SEMICOLON == k ) f5Sounder.actionPerformed( null ); else if ( ke.VK_OPEN_BRACKET == k || ke.VK_SLASH == k ) fs5Sounder.actionPerformed( null ); else if ( ke.VK_EQUALS == k || ke.VK_QUOTE == k) g5Sounder.actionPerformed( null ); else if ( ke.VK_CLOSE_BRACKET == k ) gs5Sounder.actionPerformed( null ); else showStatus( getAppletInfo().replace( '\n', '-' ) ); } } ); } public String getAppletInfo() { return "Janko Keyboard Applet \n" + "version 1" + " October 2005 \n" + "Blossom Associates West \n" + "Java: " + System.getProperty( "java.version" ) + " " + System.getProperty( "java.vendor" ) + " " + System.getProperty( "os.arch" ) + " " + System.getProperty( "os.name" ) + " " + System.getProperty( "os.version" ); } Sounder a3Sounder; Sounder as3Sounder; Sounder b3Sounder; Sounder c4Sounder; Sounder cs4Sounder; Sounder d4Sounder; Sounder ds4Sounder; Sounder e4Sounder; Sounder f4Sounder; Sounder fs4Sounder; Sounder g4Sounder; Sounder gs4Sounder; Sounder a4Sounder; Sounder as4Sounder; Sounder b4Sounder; Sounder c5Sounder; Sounder cs5Sounder; Sounder d5Sounder; Sounder ds5Sounder; Sounder e5Sounder; Sounder f5Sounder; Sounder fs5Sounder; Sounder g5Sounder; Sounder gs5Sounder; private void listen( Component theCandidate, KeyListener theListener ) { if ( theCandidate instanceof Container ) { Component[] cmpnt = ((Container)theCandidate).getComponents(); for ( int i = 0; i < cmpnt.length; i++ ) { listen( cmpnt[i], theListener ); } } else { theCandidate.addKeyListener( theListener ); } } }