-->

Chào các bạn
Chúc các bạn có những thông tin bổ ích khi vào Blog của mình

Bang ma ACII

Mã phím và mã ASCII
[Hoàng Ngọc Giao]
Với chương trình đã viết
obj = new Object();
obj.onKeyDown = function() {
  trace("Bạn ấn phím " + Key.getCode());
}
Key.addListener(obj);
bạn biết được mã số của phím được ấn nhờ thông báo ở bảng Output. Khi chạy thử chương trình, bạn thấy rõ mỗi phím của bàn phím đều có mã tương ứng, kể cả các phím đặc biệt như Ctrl, Shift, Back space, Caps lock,...
Bảng 1 liệt kê các phím và mã phím tương ứng để bạn tham khảo, bao gồm cả các phím của bộ phím số (numeric keypad) ở bên phải bàn phím.
Bảng 1 - Mã phím
PhímPhím
A65- (keypad)109
B66. (keypad)110
C67/ (keypad)111
D68F1112
E69F2113
F70F3114
G71F4115
H72F5116
I73F6117
J74F7118
K75F8119
L76F9120
M77F10121
N78F11122
O79F12123
P80F13124
Q81F14125
R82F15126
S83Back space8
T84Tab9
U85Clear12
V86Enter13
W87Shift16
X88Ctrl17
Y89Alt18
Z90Caps lock20
048Esc27
149Space bar32
250Page up33
351Page down34
452End35
553Home36
654Left arrow37
755Up arrow38
856Right arrow39
957Down arrow40
0 (keypad)96Insert45
1 (keypad)97Delete46
2 (keypad)98Help47
3 (keypad)99Num lock144
4 (keypad)100; :186
5 (keypad)101= +187
6 (keypad)102- _189
7 (keypad)103/ ?191
8 (keypad)104` ~192
9 (keypad)105[ {219
* (keypad)106\ |220
+ (keypad)107] }221
Enter (keypad)108' "222
Khi dùng hàm Key.getCode để đọc mã phím được ấn, bạn không phân biệt được ký tự thường với ký tự hoa (chẳng hạn phân biệt a với A), phân biệt hai ký tự trên cùng một phím (chẳng hạn phân biệt dấu chấm phẩy ; với dấu hai chấm :).
Khi có yêu cầu nhận biết ký tự được nhập, bạn cần đọc mã ký tự theo chuẩn ASCII (American Standard Code for Information Interchange) thay vì đọc mã phím.
Bạn sửa lại chương trình hiện có như sau:
obj = new Object();
obj.onKeyDown = function() {
  trace("Bạn gõ ký tự " + Key.getAscii());
}
Key.addListener(obj);
Chạy chương trình và thử gõ phím A trên bàn phím, bạn nhận được thông báo ở bảng Output:
Bạn gõ ký tự 97
97 là mã ASCII của ký tự a. Khi giữ phím Shift và gõ phím A trên bàn phím, bạn thấy thông báo:
Bạn gõ ký tự 0
Bạn gõ ký tự 65
Phím Shift không có mã ASCII tương ứng, do vậy hàm Key.getAscii trả về trị 0. Khi gõ phím A với phím Shift đang được ấn, bạn tạo ra ký tự A (ký tự hoa). 65 là mã của ký tự A.
Hàm Key.getAscii cũng trả về trị 0 đối với phím Ctrl vì phím Ctrl không tạo ra ký tự. Đối với phím Space (thanh ngang), hàm Key.getAscii trả về trị 32, là mã của ký tự trống.
Bảng 2 liệt kê những ký tự thường dùng và mã ASCII tương ứng để bạn tham khảo.
Bảng 2 - Mã ASCII
Ký tựKý tựKý tự
Space32@64`96
!33A65a97
"34B66b98
#35C67c99
$36D68d100
%37E69e101
&38F70f102
'39G71g103
(40H72h104
)41I73i105
*42J74j106
+43K75k107
,44L76l108
-45M77m109
.46N78n110
/47O79o111
048P80p112
149Q81q113
250R82r114
351S83s115
452T84t116
553U85u117
654V86v118
755W87w119
856X88x120
957Y89y121
:58Z90z122
;59[91{123
60\92|124
=61]93}125
62^94~126
?63_95Delete127
Nếu bạn quan tâm đến các ký tự a, b, c và muốn thông báo rõ ràng ký tự được gõ (thay vì thông báo mã ASCII) khi người dùng gõ a, b hoặc c, bạn bổ sung chương trình như sau:
keys = [];
keys[97] = "a";
keys[98] = "b";
keys[99] = "c";
obj = new Object();
obj.onKeyDown = function() {
  var ascii = Key.getAscii();
  if(keys[ascii] != null)
    trace("Bạn gõ ký tự " + keys[ascii]);
  else
    trace("Bạn gõ ký tự " + ascii);
}
Key.addListener(obj);
Câu lệnh keys = []; nhằm tạo ra dãy (đối tượng thuộc lớp Array) mang tên keys. Đó là cách viết tương đương với cách viết keys = new Array(); mà bạn đã quen thuộc. Nếu không tìm thấy ký tự tương ứng với mã ASCII đã cho trong dãy keys, chương trình chỉ đơn giản thông báo mã ASCII của ký tự được gõ.
Trong trường hợp muốn theo dõi trạng thái của phím bật/tắt trên bàn phím (phím Caps lock ứng với mã số 20 và phím Num lock ứng với mã số 144), bạn dùng hàm isToggled của lớp Key. Bạn sửa chương trình như sau:
obj = new Object();
obj.onKeyDown = function() {
  if(Key.isToggled(20))
    trace("Đèn Caps lock đang bật.");
  else
    trace("Đèn Caps lock đang tắt.");
  if(Key.isToggled(144))
    trace("Đèn Num lock đang bật.");
  else
    trace("Đèn Num lock đang tắt.");
}
Key.addListener(obj);
Khi trao cho hàm Key.isToggled mã số của phím Cap lock (20) hoặc mã số của phím Num lock (144), hàm đó cho bạn trị true nếu phím đang xét ở trạng thái bật và cho trị false trong trường hợp ngược lại.
Chạy chương trình, thử bật hoặc tắt phím Caps lock và Num lock, bạn thấy rõ hiệu lực của hàm Key.isToggled.