pub fn key_state(key: KeyCode) -> boolExpand description
Checks whether a key is currently pushed (down).
Examples found in repository?
examples/keyboard.rs (line 43)
8pub extern "C" fn dosmain() -> i32 {
9 goto_xy(2, 2);
10 put_str("KEYBOARD DEMO");
11 goto_xy(0, 16);
12 put_str("ESC - quit");
13 curs_off();
14 while !shutting_down() {
15 wait_vbl();
16 let keys = read_keys();
17
18 if !keys.is_empty() {
19 goto_xy(5, 5);
20 dos_like::text_color(3);
21 put_str("!");
22 dos_like::text_color(7);
23
24 for (i, key) in keys.iter().enumerate() {
25 goto_xy(2, 8 + i as u16);
26 put_str(" ");
27 goto_xy(2, 8 + i as u16);
28 if key.is_pressed() {
29 put_str(format!("{:?} pressed ", key.key_code()));
30 } else {
31 put_str(format!("{:?} released ", key.key_code()));
32 }
33 }
34 for i in keys.len()..8 {
35 goto_xy(2, 8 + i as u16);
36 put_str(" ");
37 }
38 } else {
39 goto_xy(5, 5);
40 put_str(" ");
41 }
42
43 if key_state(KeyCode::KEY_ESCAPE) {
44 break;
45 }
46 }
47 0
48}More examples
examples/sound.rs (line 125)
15pub extern "C" fn dosmain() -> i32 {
16 unsafe {
17 let mus = Music::load_mus("dos-like-sys/dos-like/files/sound/doom.mus")
18 .expect("Could not load doom.mus");
19 let mid = Music::load_mid("dos-like-sys/dos-like/files/sound/simon.mid")
20 .expect("Could not load simon.mid");
21 let r#mod = Music::load_mod("dos-like-sys/dos-like/files/sound/cfodder.mod")
22 .expect("Could not load cfodder.mod");
23 let opb = Music::load_opb("dos-like-sys/dos-like/files/sound/doom.opb")
24 .expect("Could not load doom.opb");
25 let wav = load_wav("dos-like-sys/dos-like/files/sound/soundcard.wav")
26 .expect("Could not load soundcard.wav");
27 let doom_soundbank = install_user_soundbank("dos-like-sys/dos-like/files/sound/doom.op2")
28 .expect("Could not load doom.op2");
29
30 let mut use_awe32 = true;
31
32 put_str("SOUND DEMO");
33 goto_xy(0, 2);
34 put_str("1 - Play MIDI song");
35 goto_xy(0, 3);
36 put_str("2 - Play MUS song");
37 goto_xy(0, 4);
38 put_str("3 - Play MOD song");
39 goto_xy(0, 5);
40 put_str("4 - Play WAV sound on channel 1");
41 goto_xy(0, 6);
42 put_str("5 - Play WAV sound on channel 2");
43 goto_xy(0, 7);
44 put_str("6 - Play WAV sound on channel 3");
45 goto_xy(0, 8);
46 put_str("7 - Stop sound and music");
47 goto_xy(0, 9);
48 put_str("8 - Sound mode 11khz 8bit mono (default)");
49 goto_xy(0, 10);
50 put_str("9 - Sound mode 44khz 16bit stereo");
51 goto_xy(0, 11);
52 put_str("0 - Sound mode 5khz 8bit mono");
53 goto_xy(0, 12);
54 put_str("A - Use AWE32 for MIDI/MUS (default)");
55 goto_xy(0, 13);
56 put_str("S - Use SoundBlaster16 for MIDI/MUS");
57 goto_xy(0, 14);
58 put_str("O - Play OPB song");
59 goto_xy(0, 16);
60 put_str("ESC - quit");
61 curs_off();
62 while !shutting_down() {
63 let key = *readchars() as u8;
64 match key {
65 b'1' => {
66 if use_awe32 {
67 set_soundbank(&Soundbank::DEFAULT_AWE32);
68 } else {
69 set_soundbank(&Soundbank::DEFAULT_SB16);
70 }
71 mid.play(false, 255);
72 }
73 b'2' => {
74 if use_awe32 {
75 set_soundbank(&Soundbank::DEFAULT_AWE32);
76 } else {
77 set_soundbank(&doom_soundbank);
78 }
79 mus.play(false, 255);
80 }
81 b'3' => {
82 r#mod.play(false, 255);
83 }
84 b'O' | b'o' => {
85 opb.play(false, 255);
86 }
87 b'4' => {
88 play_sound(0, &wav, false, 128);
89 }
90 b'5' => {
91 play_sound(1, &wav, false, 128);
92 }
93 b'6' => {
94 play_sound(2, &wav, false, 128);
95 }
96 b'7' => {
97 stop_music();
98 stop_sound(0);
99 stop_sound(1);
100 stop_sound(2);
101 }
102 b'8' => {
103 set_sound_mode(SoundMode::Mono8bit11025);
104 }
105 b'9' => {
106 set_sound_mode(SoundMode::Mono16Bit44100);
107 }
108 b'0' => {
109 set_sound_mode(SoundMode::Mono8bit5000);
110 }
111 b'A' | b'a' => {
112 if !use_awe32 {
113 use_awe32 = true;
114 stop_music();
115 }
116 }
117 b'S' | b's' => {
118 if use_awe32 {
119 use_awe32 = false;
120 stop_music();
121 }
122 }
123 _ => {}
124 }
125 if key_state(KeyCode::KEY_ESCAPE) {
126 break;
127 }
128 }
129 }
130 0
131}