summaryrefslogtreecommitdiff
path: root/src/core.c
diff options
context:
space:
mode:
authorjussi2023-03-30 00:13:02 +0300
committerjussi2023-03-30 00:13:02 +0300
commit6a7c660f33e8ec4d351c63779df27874124597c6 (patch)
treeae9c4e88093b1e89a9ca3d2ce71d996862247f72 /src/core.c
parent9df23e32b02167dd41c8b5c25b852717163dfeda (diff)
downloadreilua-enhanced-6a7c660f33e8ec4d351c63779df27874124597c6.tar.gz
reilua-enhanced-6a7c660f33e8ec4d351c63779df27874124597c6.tar.bz2
reilua-enhanced-6a7c660f33e8ec4d351c63779df27874124597c6.zip
GetKeyName and GetKeyScancode.
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/core.c b/src/core.c
index 8a2d964..c3f24cf 100644
--- a/src/core.c
+++ b/src/core.c
@@ -1495,6 +1495,69 @@ int lcoreSetExitKey( lua_State *L ) {
}
/*
+> keyName = RL_GetKeyName( int key, int scancode )
+
+This function returns the name of the specified printable key, encoded as UTF-8.
+This is typically the character that key would produce without any modifier keys,
+intended for displaying key bindings to the user. For dead keys, it is typically
+the diacritic it would add to a character.
+
+Do not use this function for text input. You will break text input for many
+languages even if it happens to work for yours.
+
+If the key is KEY_UNKNOWN, the scancode is used to identify the key,
+otherwise the scancode is ignored. If you specify a non-printable key,
+or KEY_UNKNOWN and a scancode that maps to a non-printable key,
+this function returns nil but does not emit an error.
+
+- Failure return -1
+- Success return string or nil
+*/
+int lcoreGetKeyName( lua_State *L ) {
+ if ( !lua_isnumber( L, -2 ) || !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GetKeyName( int key, int scancode )" );
+ lua_pushinteger( L, -1 );
+ return 1;
+ }
+ int scancode = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int key = lua_tointeger( L, -1 );
+
+ const char *keyName = glfwGetKeyName( key, scancode );
+
+ if ( keyName != NULL ) {
+ lua_pushstring( L, keyName );
+ }
+ else {
+ lua_pushnil( L );
+ }
+
+ return 1;
+}
+
+/*
+> scancode = RL_GetKeyScancode( int key )
+
+This function returns the platform-specific scancode of the specified key.
+If the key is KEY_UNKNOWN or does not exist on the keyboard this method will return -1.
+
+- Failure return nil
+- Success return int
+*/
+int lcoreGetKeyScancode( lua_State *L ) {
+ if ( !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GetKeyScancode( int key )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ int scancode = glfwGetKeyScancode( lua_tointeger( L, -1 ) );
+
+ lua_pushinteger( L, scancode );
+
+ return 1;
+}
+
+/*
## Core - Input-related Gamepad
*/