回答編集履歴

3

半角/全角キーについての記述を追加

2021/01/29 12:48

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -1,8 +1,14 @@
1
1
  変換キーを押したとき`key`で得られる値は0 (unknown key)になるので、`event.key`では判定できません。
2
+
3
+ 半角/全角キーを押したとき`key`で得られる値は96 (K_BACKQUOTE)です。英語キーボードで`` ` ``がある位置だからですかね。
2
4
 
3
5
 
4
6
 
5
- `scancode`でスキャンコードが得られるので、そちらを使ってください。質問文のコードであれば、`event.scancode`の値が、変換キーでは121になります(Windowsの場合)。
7
+ 対策ですが、`scancode`でスキャンコードが得られるので、そちらを使ってください。質問文のコードであれば、`event.scancode`の値が、変換キーでは`121`、半角/全角キーでは`41`になります(Windowsの場合)。
8
+
9
+
10
+
11
+ なお、(今回は関係ないですが)文字を得るためなら`event.unicode`を使います。
6
12
 
7
13
 
8
14
 
@@ -14,4 +20,8 @@
14
20
 
15
21
  print("変換")
16
22
 
23
+ elif event.scancode == 41:
24
+
25
+ print("半角/全角")
26
+
17
27
  ```

2

無変換は対象外だったので除外

2021/01/29 12:48

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -1,8 +1,8 @@
1
- 変換キー、無変換キーもに`key`で得られる値は0 (unknown key)になるので、`event.key`では判定できません。
1
+ 変換キーを押した`key`で得られる値は0 (unknown key)になるので、`event.key`では判定できません。
2
2
 
3
3
 
4
4
 
5
- `scancode`でスキャンコードが得られるので、そちらを使ってください。質問文のコードであれば、`event.scancode`の値が、変換キーでは123、変換キーでは121になります(Windowsの場合)。
5
+ `scancode`でスキャンコードが得られるので、そちらを使ってください。質問文のコードであれば、`event.scancode`の値が、変換キーでは121になります(Windowsの場合)。
6
6
 
7
7
 
8
8
 
@@ -10,11 +10,7 @@
10
10
 
11
11
  if event.type == pygame.KEYDOWN:
12
12
 
13
- if event.scancode == 123:
13
+ if event.scancode == 121:
14
-
15
- print("無変換")
16
-
17
- elif event.scancode == 121:
18
14
 
19
15
  print("変換")
20
16
 

1

コードを追加

2021/01/29 12:35

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -3,3 +3,19 @@
3
3
 
4
4
 
5
5
  `scancode`でスキャンコードが得られるので、そちらを使ってください。質問文のコードであれば、`event.scancode`の値が、無変換キーでは123、変換キーでは121になります(Windowsの場合)。
6
+
7
+
8
+
9
+ ```Python
10
+
11
+ if event.type == pygame.KEYDOWN:
12
+
13
+ if event.scancode == 123:
14
+
15
+ print("無変換")
16
+
17
+ elif event.scancode == 121:
18
+
19
+ print("変換")
20
+
21
+ ```