9
9
//! that the interrupt can access, which is unsafe.
10
10
11
11
#![ cfg_attr( not( test) , no_std) ]
12
+ #[ cfg( test) ]
13
+ extern crate std as core;
12
14
13
15
// ****************************************************************************
14
16
//
15
17
// Imports
16
18
//
17
19
// ****************************************************************************
18
20
19
- #[ cfg( not( test) ) ]
20
21
use core:: marker:: PhantomData ;
21
22
22
- #[ cfg( test) ]
23
- use std:: marker:: PhantomData ;
24
-
25
23
// ****************************************************************************
26
24
//
27
25
// Modules
@@ -314,7 +312,7 @@ where
314
312
S : ScancodeSet ,
315
313
{
316
314
/// Make a new Keyboard object with the given layout.
317
- pub fn new ( _layout : T , _set : S , handle_ctrl : HandleControl ) -> Keyboard < T , S > {
315
+ pub const fn new ( handle_ctrl : HandleControl ) -> Keyboard < T , S > {
318
316
Keyboard {
319
317
register : 0 ,
320
318
num_bits : 0 ,
@@ -340,7 +338,7 @@ where
340
338
}
341
339
342
340
/// Get the current Ctrl key mapping.
343
- pub fn get_ctrl_handling ( & self ) -> HandleControl {
341
+ pub const fn get_ctrl_handling ( & self ) -> HandleControl {
344
342
self . handle_ctrl
345
343
}
346
344
@@ -490,16 +488,16 @@ where
490
488
}
491
489
}
492
490
493
- fn get_bit ( word : u16 , offset : usize ) -> bool {
491
+ const fn get_bit ( word : u16 , offset : usize ) -> bool {
494
492
( ( word >> offset) & 0x0001 ) != 0
495
493
}
496
494
497
- fn has_even_number_bits ( data : u8 ) -> bool {
495
+ const fn has_even_number_bits ( data : u8 ) -> bool {
498
496
( data. count_ones ( ) % 2 ) == 0
499
497
}
500
498
501
499
/// Check 11-bit word has 1 start bit, 1 stop bit and an odd parity bit.
502
- fn check_word ( word : u16 ) -> Result < u8 , Error > {
500
+ const fn check_word ( word : u16 ) -> Result < u8 , Error > {
503
501
let start_bit = Self :: get_bit ( word, 0 ) ;
504
502
let parity_bit = Self :: get_bit ( word, 9 ) ;
505
503
let stop_bit = Self :: get_bit ( word, 10 ) ;
@@ -525,7 +523,7 @@ where
525
523
}
526
524
527
525
impl KeyEvent {
528
- pub fn new ( code : KeyCode , state : KeyState ) -> KeyEvent {
526
+ pub const fn new ( code : KeyCode , state : KeyState ) -> KeyEvent {
529
527
KeyEvent { code, state }
530
528
}
531
529
}
@@ -537,15 +535,15 @@ impl KeyEvent {
537
535
// ****************************************************************************
538
536
539
537
impl Modifiers {
540
- pub fn is_shifted ( & self ) -> bool {
538
+ pub const fn is_shifted ( & self ) -> bool {
541
539
self . lshift | self . rshift
542
540
}
543
541
544
- pub fn is_ctrl ( & self ) -> bool {
542
+ pub const fn is_ctrl ( & self ) -> bool {
545
543
self . lctrl | self . rctrl
546
544
}
547
545
548
- pub fn is_caps ( & self ) -> bool {
546
+ pub const fn is_caps ( & self ) -> bool {
549
547
( self . lshift | self . rshift ) ^ self . capslock
550
548
}
551
549
}
@@ -564,11 +562,8 @@ mod test {
564
562
565
563
#[ test]
566
564
fn test_f9 ( ) {
567
- let mut k = Keyboard :: new (
568
- layouts:: Us104Key ,
569
- ScancodeSet2 ,
570
- HandleControl :: MapLettersToUnicode ,
571
- ) ;
565
+ let mut k =
566
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
572
567
// start
573
568
assert_eq ! ( k. add_bit( false ) , Ok ( None ) ) ;
574
569
// 8 data bits (LSB first)
@@ -591,11 +586,8 @@ mod test {
591
586
592
587
#[ test]
593
588
fn test_f9_word ( ) {
594
- let mut k = Keyboard :: new (
595
- layouts:: Us104Key ,
596
- ScancodeSet2 ,
597
- HandleControl :: MapLettersToUnicode ,
598
- ) ;
589
+ let mut k =
590
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
599
591
assert_eq ! (
600
592
k. add_word( 0x0402 ) ,
601
593
Ok ( Some ( KeyEvent :: new( KeyCode :: F9 , KeyState :: Down ) ) )
@@ -604,11 +596,8 @@ mod test {
604
596
605
597
#[ test]
606
598
fn test_f9_byte ( ) {
607
- let mut k = Keyboard :: new (
608
- layouts:: Us104Key ,
609
- ScancodeSet2 ,
610
- HandleControl :: MapLettersToUnicode ,
611
- ) ;
599
+ let mut k =
600
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
612
601
assert_eq ! (
613
602
k. add_byte( 0x01 ) ,
614
603
Ok ( Some ( KeyEvent :: new( KeyCode :: F9 , KeyState :: Down ) ) )
@@ -617,11 +606,8 @@ mod test {
617
606
618
607
#[ test]
619
608
fn test_keyup_keydown ( ) {
620
- let mut k = Keyboard :: new (
621
- layouts:: Us104Key ,
622
- ScancodeSet2 ,
623
- HandleControl :: MapLettersToUnicode ,
624
- ) ;
609
+ let mut k =
610
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
625
611
assert_eq ! (
626
612
k. add_byte( 0x01 ) ,
627
613
Ok ( Some ( KeyEvent :: new( KeyCode :: F9 , KeyState :: Down ) ) )
@@ -639,11 +625,8 @@ mod test {
639
625
640
626
#[ test]
641
627
fn test_f5 ( ) {
642
- let mut k = Keyboard :: new (
643
- layouts:: Us104Key ,
644
- ScancodeSet2 ,
645
- HandleControl :: MapLettersToUnicode ,
646
- ) ;
628
+ let mut k =
629
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
647
630
// start
648
631
assert_eq ! ( k. add_bit( false ) , Ok ( None ) ) ;
649
632
// 8 data bits (LSB first)
@@ -666,11 +649,8 @@ mod test {
666
649
667
650
#[ test]
668
651
fn test_f5_up ( ) {
669
- let mut k = Keyboard :: new (
670
- layouts:: Us104Key ,
671
- ScancodeSet2 ,
672
- HandleControl :: MapLettersToUnicode ,
673
- ) ;
652
+ let mut k =
653
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
674
654
// Send F0
675
655
676
656
// start
@@ -713,11 +693,8 @@ mod test {
713
693
714
694
#[ test]
715
695
fn test_shift ( ) {
716
- let mut k = Keyboard :: new (
717
- layouts:: Uk105Key ,
718
- ScancodeSet2 ,
719
- HandleControl :: MapLettersToUnicode ,
720
- ) ;
696
+ let mut k =
697
+ Keyboard :: < layouts:: Uk105Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
721
698
// A with left shift held
722
699
assert_eq ! (
723
700
k. process_keyevent( KeyEvent :: new( KeyCode :: ShiftLeft , KeyState :: Down ) ) ,
@@ -815,11 +792,8 @@ mod test {
815
792
816
793
#[ test]
817
794
fn test_ctrl ( ) {
818
- let mut k = Keyboard :: new (
819
- layouts:: Us104Key ,
820
- ScancodeSet2 ,
821
- HandleControl :: MapLettersToUnicode ,
822
- ) ;
795
+ let mut k =
796
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
823
797
// Normal
824
798
assert_eq ! (
825
799
k. process_keyevent( KeyEvent :: new( KeyCode :: A , KeyState :: Down ) ) ,
@@ -876,11 +850,8 @@ mod test {
876
850
877
851
#[ test]
878
852
fn test_numlock ( ) {
879
- let mut k = Keyboard :: new (
880
- layouts:: Uk105Key ,
881
- ScancodeSet2 ,
882
- HandleControl :: MapLettersToUnicode ,
883
- ) ;
853
+ let mut k =
854
+ Keyboard :: < layouts:: Uk105Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
884
855
885
856
// Numlock ON by default
886
857
assert_eq ! (
@@ -946,11 +917,8 @@ mod test {
946
917
947
918
#[ test]
948
919
fn test_set_1_down_up_down ( ) {
949
- let mut k = Keyboard :: new (
950
- layouts:: Us104Key ,
951
- ScancodeSet1 ,
952
- HandleControl :: MapLettersToUnicode ,
953
- ) ;
920
+ let mut k =
921
+ Keyboard :: < layouts:: Us104Key , ScancodeSet1 > :: new ( HandleControl :: MapLettersToUnicode ) ;
954
922
assert_eq ! (
955
923
k. add_byte( 0x1e ) ,
956
924
Ok ( Some ( KeyEvent :: new( KeyCode :: A , KeyState :: Down ) ) )
@@ -967,11 +935,8 @@ mod test {
967
935
968
936
#[ test]
969
937
fn test_set_1_ext_down_up_down ( ) {
970
- let mut k = Keyboard :: new (
971
- layouts:: Us104Key ,
972
- ScancodeSet1 ,
973
- HandleControl :: MapLettersToUnicode ,
974
- ) ;
938
+ let mut k =
939
+ Keyboard :: < layouts:: Us104Key , ScancodeSet1 > :: new ( HandleControl :: MapLettersToUnicode ) ;
975
940
assert_eq ! ( k. add_byte( 0xe0 ) , Ok ( None ) ) ;
976
941
assert_eq ! (
977
942
k. add_byte( 0x1c ) ,
@@ -986,11 +951,8 @@ mod test {
986
951
987
952
#[ test]
988
953
fn test_set_2_poweron ( ) {
989
- let mut k = Keyboard :: new (
990
- layouts:: Us104Key ,
991
- ScancodeSet2 ,
992
- HandleControl :: MapLettersToUnicode ,
993
- ) ;
954
+ let mut k =
955
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
994
956
assert_eq ! (
995
957
k. add_byte( 0xAA ) ,
996
958
Ok ( Some ( KeyEvent :: new(
@@ -1002,11 +964,8 @@ mod test {
1002
964
1003
965
#[ test]
1004
966
fn test_set_2_toomanykeys ( ) {
1005
- let mut k = Keyboard :: new (
1006
- layouts:: Us104Key ,
1007
- ScancodeSet2 ,
1008
- HandleControl :: MapLettersToUnicode ,
1009
- ) ;
967
+ let mut k =
968
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
1010
969
assert_eq ! (
1011
970
k. add_byte( 0x00 ) ,
1012
971
Ok ( Some ( KeyEvent :: new(
@@ -1018,11 +977,8 @@ mod test {
1018
977
1019
978
#[ test]
1020
979
fn test_set_2_down_up ( ) {
1021
- let mut k = Keyboard :: new (
1022
- layouts:: Us104Key ,
1023
- ScancodeSet2 ,
1024
- HandleControl :: MapLettersToUnicode ,
1025
- ) ;
980
+ let mut k =
981
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
1026
982
assert_eq ! (
1027
983
k. add_byte( 0x29 ) ,
1028
984
Ok ( Some ( KeyEvent :: new( KeyCode :: Spacebar , KeyState :: Down ) ) )
@@ -1054,11 +1010,8 @@ mod test {
1054
1010
1055
1011
#[ test]
1056
1012
fn test_set_2_ext_down_up ( ) {
1057
- let mut k = Keyboard :: new (
1058
- layouts:: Us104Key ,
1059
- ScancodeSet2 ,
1060
- HandleControl :: MapLettersToUnicode ,
1061
- ) ;
1013
+ let mut k =
1014
+ Keyboard :: < layouts:: Us104Key , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
1062
1015
assert_eq ! ( k. add_byte( 0xE0 ) , Ok ( None ) ) ;
1063
1016
assert_eq ! (
1064
1017
k. add_byte( 0x6C ) ,
@@ -1074,11 +1027,8 @@ mod test {
1074
1027
1075
1028
#[ test]
1076
1029
fn test_frazert ( ) {
1077
- let mut k = Keyboard :: new (
1078
- layouts:: Azerty ,
1079
- ScancodeSet2 ,
1080
- HandleControl :: MapLettersToUnicode ,
1081
- ) ;
1030
+ let mut k =
1031
+ Keyboard :: < layouts:: Azerty , ScancodeSet2 > :: new ( HandleControl :: MapLettersToUnicode ) ;
1082
1032
assert_eq ! (
1083
1033
k. process_keyevent( KeyEvent :: new( KeyCode :: NumpadSlash , KeyState :: Down ) ) ,
1084
1034
Some ( DecodedKey :: Unicode ( '/' ) )
0 commit comments